추상클래스
: 구체적이지 않은 클래스를 의미.
예 ) 독수리, 타조는 구체적인 새를 지칭하는 데 새, 포유류 같은 것은 구체적이지 않다.
추상클래스 정의하기
- 추상클래스는 클래스 앞에 abstract 키워드를 이용해서 정의한다.
- 추상클래스는 미완성의 '추상 메소드'를 포함할 수 있다.
- '추상 메소드'란, 내용이 없는 메소드이다. 즉, 구현이 되지 않는 메소드이다.
- '추상 메소드'는 리턴 타입 앞에 abstract 라는 키워드를 붙여야한다.
- 추상 클래스는 인스턴스를 생성할 수 없다.
public abstract class Bird{
public abstract void sing ();
public void fly(){
System.put.println("날다");
}
}
- sing은 추상 메소드 메소드에 대한 설명 없이 바로 끝나므로 추상 메소드이며 구현이 되지 않음.
추상 클래스를 상속 받는 클래스 생성하기
- 추상 클래스를 상속받은 클래스는 추상클래스가 갖고 있는 추상 메소드를 반드시 구현해야한다.
- 추상 클래스를 상속받고, 추상클래스가 갖고 있는 추상 메소드를 구현하지 않으면 해당 클래스도 추상 클래스가 된다.
public class Duck extends Bird {
@override
public void sing(){
System.out.println("꽥꽥!");
}
}
- 클래스 Duck은 Bird라는 추상 클래스를 상속받아 추상메소드인 sing(메소드 안에 내용이 없음)을 구현하고 있다.
- 추상 클래스인 Bird를 상속받은 클래스 Duck은 sing이라는 추상 메소드를 구현하지 않으면 Duck이라는 클래스도 추상 클래스가 된다는 말임.
사용하기
- Bird는 추상 클래스이므로 객체를 생성할 수 없다.
public class DuckExam {
public static void main(String[] args) {
Duck duck = new Duck();
duck.sing();
duck.fly();
//Bird b = new Bird();
}
}
- Duck은 추상 클래스를 상속 받았지만 추상 메소드인 sing을 구현해 추상 클래스가 아님! 따라서 객체생성 즉, 인스턴스화가 잘 됨.
하지만, 추상 클래스인 Bird는 추상 클래스이므로 객체를 생성할 수 없다!
'👩💻 BackEnd > ☕️ 자바 [Java]' 카테고리의 다른 글
[Java] 클래스 형변환 (0) | 2023.04.17 |
---|---|
[Java] 부모 생성자 super / 오버라이딩 (0) | 2023.04.17 |
[Java] 상속 / 접근제한자 (0) | 2023.04.16 |
[JAVA] 오버로딩 / 패키지 (0) | 2023.04.15 |
[JAVA] 참조변수 this. (0) | 2023.04.15 |