본문 바로가기
프로그래밍 언어/JAVA

[JAVA] 추상 클래스(Abstract Class) & 추상 메소드(Abstract Method)

by E145 2021. 1. 20.
반응형

추상 클래스(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 + " : 야옹");
	}
}

실행 결과

 

 

 

반응형

댓글