Today I Learned

[Java] abstract class 본문

Java

[Java] abstract class

떡볶이떡의 춤사위 2023. 6. 4. 23:14

[추상클래스]

완성되지 않은 클래스, abstract method를 하나 이상 가지고 있는 클래스, class 키워드 앞에 abstract 키워드를 붙여 명시한다.

 

[특징]

미완성 클래스이므로 인스턴스 생성이 불가하며 자손클래스에 의해서만 완성될 수 있다.

일반클래스와 똑같이 생성자, 멤버변수, 메서드를 가질 수 있다.

 

[부가설명]

자동차도 기능에 따라 여러 모델이 있지만 공통적인 부분은 다수 존재한다.

자동차를 처음부터 만드는 것과 공통적인 부분은 만들어놓고 부가적인 기능은 각 모델에 따라 완성하는 것을 비교하였을 때 후자가 더 효율적인 방법이다.

 

[추상메서드]

메서드는 선언부와 구현부로 구성되어있다. 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨둔 메서드가 추상메서드이다. 추상메서드는 리턴타입 앞에 abstract 키워드와 선언부 끝에 세미콜론을 붙여 명시한다.

 

[제어자]

private + abstract

- 자손클래스에서 abstract method를 구현해야 하는데 자손클래스에서 접근할 수 없게 되므로 같이 사용할 수 없다.

 

static + abstract

- 클래스가 메모리에 올라갈 때 정적 메서드가 생성되는데 메서드의 구현부가 작성되어 있어야 하므로 같이 사용할 수 없다.

 

final + abstract

- 클래스에 final이 붙어있다면 상속이 불가능하다는 의미인데 자손클래스에서 abstract class를 상속받아 abstract method를 구현해야 하므로 모순이다.

- 메서드에 final이 붙어있다면 오버라이딩이 불가능하다는 의미인데 자손클래스에서 abstract method를 구현해야 하므로 모순이다.

 

'Java' 카테고리의 다른 글

[Java] interface  (0) 2023.06.14
[Java] final  (0) 2023.01.02
Garbage Collection  (0) 2022.12.23
Java Virtual Machine(JVM)  (0) 2022.12.21
0.JAVA  (1) 2022.12.20