728x90
반응형
추상 클래스
- 추상 메소드를 갖는 클래스
- 추상 메소드 : 헤더만 정의되고 구현 코드는 정의하지 않은 메소드
abstract class Shape {
int x,y;
public void move(int x,int y) {
this.x=x;
this.y=y;
}
public abstract void draw();
}
class Rectangle extends Shape{
int width,height;
@Override
public void draw() {
// TODO Auto-generated method stub
System.out.println("사각형");
}
}
class Circle extends Shape{
@Override
public void draw() {
// TODO Auto-generated method stub
System.out.println("원");
}
}
-
추상클래스 Shape 특징
- Shape 클래스는 객체생성이 불가능하다.
- 추상클래스이여도 반드시 추상 메소드를 갖는것이 아니라 일반 메소드를 가질수있다. [코드의 move 메소드 참조]
- 추상메소드를 하나라도 가지면 추상클래스가 된다. 만약 추상메소드를 가지고 있는데 abstract를 class앞에 붙이지 않으면 컴파일 오류가 발생한다. [ 코드의 draw(); 참조]
- 서브 클래스 Rectangle에서 Shape를 상속받았으므로 draw메소드를 반드시 재정의 해줘야한다.
인터페이스
- 인터페이스(interface) : 추상 메소드들로만 이루어진다.
public interface exinterface {
반환형 추상 메소드();
}
public class 클래스이름 implements exinterface{
반환형 추상 메소드() {
}
}
- 인터페이스 안에는 추상 메소드들이 정의된다.
- 인터페이스를 구현하는 클래스는 추상 메소드의 몸체를 구현하여야 한다.
인터페이스의 예
- 전원을 키다,전원을 끄다 기능을 갖는 리모컨 구현
- TV를 클래스로 정의하고 TV의 전원 기능을 리모컨으로부터 상속받음.
- 냉장고를 클래스로 정의하고 냉장고의 전원 기능을 리모컨으로 부터 상속받음.
public class Tv implements RemoteControl {
@Override
public void turnOn() {
// TODO Auto-generated method stub
//TV의 전원 켜기 위한 코드
}
@Override
public void turnOff() {
// TODO Auto-generated method stub
//TV의 전원을 끄기 위한 코드
}
}
Tv t = new Tv();
t.turnOn();
t.turnOff();
인터페이스 생성
- Tv클래스에서 전원과 관련된 부분만 리모컨 인터페이스로 사용하는 개념
- 리모컨 인터페이스에서 생성된 객체는 Tv의 다른 기능을 제어할수 없음.
RemoteControl remote = new Tv();
remote.turnOn();
remote.turnOff();
1.Tv객체이지만 RemoteControl 인터페이스를 구현하기때문에 RemoteControl 타입의 변수로 가리킬수 있다.
2.remote를 통해서 RemoteControl 인터페이스에 정의된 메소드만을 호출할수 있다.
다중 상속
- 클래스는 다중 상속이 제한되지만 인터페이스는 다중상속이 가능하다.
- 한개의 클래스에 여러개의 인터페이스를 구현할수있다.
관련글
반응형
'IT 기술 > 자바[Java]' 카테고리의 다른 글
Java 공부 정리 [7] - 제네릭 , 컬렉션 (0) | 2020.01.10 |
---|---|
Java 공부 정리[6] - 예외 처리 (Exception) (0) | 2020.01.09 |
Java 공부 정리[4] - 배열 (0) | 2019.11.08 |
Java 공부 정리 [3] - 상속(2) (0) | 2019.10.24 |
Java 공부 정리 [2] - 상속 (0) | 2019.10.23 |