추상 클래스 Abstract class
추상 클래스
- 미완성 클래스
- 객체를 생성할 수 없다
- new 연산자를 직접 사용할 수 없다
- 추상메소드가 1개라도 있으면 추상클래스
- 추상메소드와 일반메소드가 같이 선언 가능하다
추상 메소드
- 미완성 메소드
- 형식) 리턴형 함수명();
- 메소드의 body {} 가 없는 함수
- 메소드를 선언만 해 놓음
인터페이스(interface) : 추상메소드만 선언 가능하다
[ Animal클래스 생성 후 실습 ]
//추상클래스는 new연산자로 직접 객체 생성 할 수 없다
//Animal ani=new Animal();
Elephant jumbo=new Elephant();
jumbo.disp();
Tuna nemo=new Tuna();
nemo.disp();
//다형성
Animal animal=new Elephant();
animal.disp();
animal=new Tuna();
[ Anumal 클래스 ]
package oop0321;
abstract class Animal { //추상클래스
String name;
void view() {} //일반메소드
abstract void disp(); //추상메소드(미완성)
}//class end
//추상클래스를 상속받은 자식클래스는 반드시 추상메소드를 완성해야 한다(override)
//추상클래스를 상속받은 자식클래스는 반드시 추상메소드를 완성해야한다(override)
class Elephant extends Animal{
@Override
void disp() {
System.out.println("점보");
}
}//class end
class Tuna extends Animal{
@Override
void disp() {
System.out.println("니모");
}
}//class end
[ 추상클래스의 다형성 ]
package oop0321;
abstract class Travel { //추상클래스
void view() {} //일반메소드
abstract String travalWhere(); //추상메소드
}//class end
class TypeA extends Travel {
@Override
String travalWhere() {
return "제주도 올레길";
}
}//class end
class TypeB extends Travel {
@Override
String travalWhere() {
return "여의도 벚꽃 축제";
}
}//class end
class TypeC extends Travel {
@Override
String travalWhere() {
return "지리산 둘레길";
}
}//class end
public class Test02_abstract {
public static void main(String[] args) {
//추상클래스와 다형성
Travel tour=new TypeA();
System.out.println(tour.travalWhere());
tour=new TypeB();
System.out.println(tour.travalWhere());
tour=new TypeC();
System.out.println(tour.travalWhere());
}//main() end
}//class end
'Backend > JAVA' 카테고리의 다른 글
[JAVA] 익명 내부 객체 Anonymous class (0) | 2023.03.21 |
---|---|
[JAVA] interface (0) | 2023.03.21 |
[JAVA] 다형성 (polymorphism) (0) | 2023.03.21 |
[JAVA] super (0) | 2023.03.21 |
[JAVA] quiz : 주민번호 각 숫자의 합 & 대소문자 변환하여 출력 (0) | 2023.03.21 |