추상클래스
하나 이상의 추상 메소드를 포함하는 클래스
*추상메소드 : 완전하게 구현되어 있지 않은 메소드 (중괄호 없이 선언됨)
추상 클래스라는 것을 알려주기 위해 abstract를 붙여야 함.
abstract class Shape3 {
int x, y;
public void translate (int x, int y) {
this.x = x;
this.y = y;
}
public abstract void draw();
};
class Rectangle2 extends Shape3 {
int width, height;
public void draw() { System.out.println("사각형 그리기 메소드"); }
};
class Circle2 extends Shape3 {
int radius;
public void draw() { System.out.println("원 그리기 메소드"); }
};
public class AbstractTest {
public static void main(String[] args) {
//Shape3 s1 = new Shape3();
Shape3 s2 = new Circle2();
s2.draw();
}
}
추상 클래스인 부모 클래스를 상속 받은 자식 클래스에서 abstract를 쓰지 않는 이유 : draw 메소드가 구현되었기 때문. (구현하지 않으면 오류 발생
추상 클래스 사용하는 이유
추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위해서.
만약 일반 메소드로 구현 -> 사용자에 따라 해당 메소드를 구현할 수도 있고, 안 할 수도 있습니다.
추상 메소드가 포함된 추상 클래스를 상속받은 모든 자식 클래스 -> 추상 메소드를 구현해야만 인스턴스를 생성할 수 있으므로, 반드시 구현.
하드웨어 인터페이스
추상클래스에서 정의 되어 있는 메소드를 가져다가 자신의 클래스만의 것으로 재정의 하는 것임. 즉, 서로 상호작용할 수 있도록 규격을 만들어 놓은 것임.
인터페이스
상속이 아닌 클래스 간의 유사성을 인코딩함. 규격을 통해 나만의 것으로 재정의.
public interface 이름 {
}
다음과 같은 형태로 작성하면 됨.
* 필드 선언 불가. (그러나 상수는 사용할 수 있음)
* abstract는 선언할 필요 없음.
'JAVA' 카테고리의 다른 글
랩퍼 클래스 - 객지설 4주차 (0) | 2024.05.03 |
---|---|
객프 13주차 (0) | 2023.11.29 |
객프 10주차 (0) | 2023.11.14 |
객프 10주차 (0) | 2023.11.06 |
Power JAVA 개정3판 CHAPTER01 답 (0) | 2023.10.30 |