본문 바로가기
Backend/JAVA

[JAVA] 추상클래스 (abstract class)

by howdyoon 2023. 3. 21.

추상 클래스 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