추상클래스
•
추상클래스는 인터페이스의 역할도 하면서 클래스의 기능도 가지고 있다.
•
불완전한 클래스와 메소드에 abstract를 표기해준다.
•
abstract에 붙은 메소드는 바디를 구현하지 않고 세미콜론(;)으로 종료시킨다.
주의
1.
추상클래스 내부에 추상 메소드가 아닌 보통의 메소드도 올 수 있다.
2.
추상메소드를 하나라도 가지면 추상 클래스가 된다.
3.
부모클래스에 추상메소드가 정의되면 반드시 자식클래스에서 오버라이드하여 구현해야한다.(그렇지 않으면 오류발생)
4.
추상클래스는 일반클래스와 달리 단독으로 객체를 생성할 수 없다.
5.
추상 클래스 자체로 객체 생성이 불가능함
Animal animal = new Animal(); // 생성 불가
Java
복사
추상클래스의 용도
부모클래스를 상속받게하여 자식 클래스에서 사용할때 추상메소드가 있다면 반드시 자식클래스에서 오바라이드할 수 있도록 강제성을 준다.
cf. 일반클래스로 구현하게 되면 자식클래스에서 오버라이드한 여부는 컴파일러가 확인하지 않고 실행시켜준다.
추상클래스 권장시기
1.
만약 관련된 클래스들 사이에서 코드를 공유하고 싶을 경우
2.
공통적인 필드나 메소드의 수가 많은 경우
3.
public 이외의 접근 지정자를 사용해야 하는 경우
4.
정적이 아닌 필드나 상수가 아닌 필드를 선언하기를 원할 경우???
정적이 아닌 필드나 상수가 아닌 필드가 무엇인지…?