추상 클래스(abstract class)
-미완성 설계도. 미완성 메서드를 갖고 있는 클래스
-추상 메서드 몸통{}이 없는 (미완성 메서드)
-앞에 abstract라는 키워드를 붙임
-다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가.
ex) 생성자 참조 변수 = new 생성자; //에러 : 추상 클래스의 인스턴스 생성 불가
-상속을 통해 추상 메서드를 완성해야 인스턴스 생성 가능
ex) class A extends 추상 클래스 {
추상 클래스에서 만든 추상 메서드를 구현할 수 있음.
}
-> 이를 통해 A는 인스턴스 생성이 가능하다. 즉, 완성된 설계도이다.
추상 메서드(abstract method)
-미완성 메서드. 구현부(몸통, {})가 없는 메서드
-꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우
ex 추상 클래스에서 추상 메서드를 두 개 생성할 때 A는 추상 메서드 두 개를 구현해 만들 수 있고 B는 추상 메서드 두 개 중 한 개만 구현이 가능하다는 말이다. -> 원래 상속된 애들은 두 개를 구현해야 되지만 추상 클래스를 상속받은 클래스는 특정 추상 메서드만 구현이 가능하다. 이 때는 필연적으로 abstract를 붙여야 된다. 사실 정확히 말하자면 B의 경우는 추상 메서드 하나를 완성하고 다른 하나는 생략되어 있다. 즉, 추상 클래스를 상속받은 얘들은 추상 클래스에서 정의한 추상 메서드를 전부 다 구현할 필요 없이 일부만 구현이 가능하다.
-추상 메서드 호출 가능(호출할 때는 선언 부만 필요) 이 경우 1. 상속을 통해 자손이 추상 메서드를 완성 2. 자손의 객체를 생성 3. 그러면 추상 메서드를 사용할 수 있다.
추상 클래스의 작성
-여러 클래스에 공통적으로 사용될 수 있는 추상 클래스를 바로 작성하거나 기존 클래스의 공통부분을 뽑아서 추상 클래스를 만든다.
-추상화된 코드는 구체화된 코드보다 유연하다. 변경에 유리
ex) ABC abc = new ABC(); 구체적 / ABC abc = ABC.getInstance(); 추상적 -> ABC 자손 객체를 반환
해당 포스팅은 남궁성님의 자바의 정석 기초편을 보면서 공부한 내용을 정리했습니다. 참고 부탁드립니다.
'JAVA' 카테고리의 다른 글
연산자 (0) | 2022.06.06 |
---|---|
Scanner (0) | 2022.06.06 |
형 변환 (0) | 2022.06.06 |
양의 정수, 음수, 실수, 자료형 (0) | 2022.06.03 |
인터페이스 (0) | 2022.05.25 |