반응형
추상 클래스(Abstract Class)
추상 클래스(Abstract Class) 란?
- 구상 클래스와 달리 완전히 구현되지 않은 클래스 이다.
- 인스턴스 생성을 허용하지 않는 클래스
(컴파일러는 추상 클래스의 인스턴스 생성을 허용하지 않는다.)
- 반드시 확장(상속) 을 해야 하는 클래스. 확장하지 않으면 의미가 없다.
추상 클래스 만드는 방법
- 클래스를 선언할 때 앞에 abstract를 붙여준다.
// 추상 클래스 클래스 앞에 abstract를 붙인다
abstract class animal{
public String name;
public abstract void bark();
}
- 추상 클래스는 구상 클래스와 같이 enxtends 키워드를 통해 상속한다.
추상 메소드(Abstract Method)
추상 메소드(Abstract Method) 란?
- 반드시 오버라이드 해야 하는 메소드.
- 확장(상속) 시 반드시 오버라이드 해야 하는 메소드는 추상 메소드로 만든다.
즉, 추상 메소드가 있는 추상 클래스를 상속 받은 클래스는 반드시 추상 메소드를 구현해야 한다.
추상 메소드 만드는 방법
- 메소드 생성 시 abstract 키워드를 넣어서 생성한다.
- 추상 메소드는 몸통이 필요없기 때문에 중괄호({}) 가 필요 없고, 세미콜론을 써서 선언을 끝내면 된다.
- 추상 메소드는 반드시 추상 클래스안에 선언되어야 한다.
abstract class animal{
public String name;
// 추상 메소드 메소드 생성 시 abstract 키워드를 추가한다.
// 몸통 부분은 존재하지 않고, 세미콜론으로 선언을 끝낸다.
public abstract void bark();
}
추상 클래스 & 추상 메소드 사용 예시
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<animal> animalList = new ArrayList<animal>();
animalList.add(new dog("강아지"));
animalList.add(new cat("고양이"));
for(animal a : animalList){
a.bark();
}
}
}
abstract class animal{
public String name;
public abstract void bark();
}
class dog extends animal{
public dog(String name){
this.name=name;
}
public void bark(){
System.out.println(name + " : 명멍");
}
}
class cat extends animal{
public cat(String name){
this.name=name;
}
public void bark(){
System.out.println(name + " : 야옹");
}
}
반응형
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
[JAVA] 예외 처리 (0) | 2021.01.20 |
---|---|
[JAVA] 인터페이스(Interface) (0) | 2021.01.20 |
[JAVA] 오버라이딩(Overriding) 과 오버로딩(Overloading) // 다형성 (0) | 2021.01.20 |
[JAVA] 상속(Inheritance) (0) | 2021.01.20 |
[JAVA] 객체의 생성, 생성자 (0) | 2021.01.20 |
댓글