본문 바로가기

JAVA

객프 11주

추상클래스

하나 이상의 추상 메소드를 포함하는 클래스

*추상메소드 : 완전하게 구현되어 있지 않은 메소드 (중괄호 없이 선언됨)

추상 클래스라는 것을 알려주기 위해 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