프로그래밍에서의 추상화: '덜 완성된'
상속 목적으로(인스턴스화 목적X) 클래스를 만든 경우,
(ex) UnivFriend와 HighFriend를 상속의 관계로 연결하기 위해 Friend 클래스를 정의한 경우) 실수로 인스턴스화 돼도 컴파일 에러가 안 나서 위험하다.
추상화하면 인스턴스 생성을 막을 수 있다!
abstract 메소드가 있는 클래스를 abstract 클래스라고 한다.
abstract: 메소드를 완성시키지 않는다는 선언
ex) 오버라이딩 관계 유지를 목적으로 하는 메소드
✅ 예시
public abstract void showBasicInfo();
여기 보면 중괄호 { }가 없다. abstract 없이 그냥
public void showBasicInfo();
라고만 하면 컴파일 에러가 뜨지만, abstract를 넣어줌으로써 '내가 일부러 미완성 상태로 둔 거야'라고 알려주게 된다.
따라서 컴파일 에러도 뜨지 않는다.
인스턴스 생성은 불가능하나, 나머지(참조변수 선언...)는
일반적인 클래스처럼 잘 된다!
참조변수 선언 예시
🔽
aaa b(참조변수명) = new aaa();
abstract 클래스에게 abstract 메소드({ } 없는 미완성된 메소드)를 받아서 구현을 하면 컴파일 에러가 안 난다.
만약 구현 안하고 그대로 받기만 하면 하위 클래스에도 abstract 메소드가 생기는 것이므로 abstract 선언되어야 한다. 안 그러면 컴파일 에러가 난다.
〰〰〰
*오렌지미디어 '난 정말 JAVA를 공부한 적이 없다구요' 강의 보고 정리한 내용이다.