JAVA

day09) 추상 메서드, 추상 클래스

code_learner 2021. 12. 31. 23:41

추상메서드

  1. 일반 메서드에서 메서드 시그니쳐 부분만 정의하고 구체적인 내용은 비워 놓은 메서드=> 바디를 구현하면 오류
  2. 추상메서드가 있는 클래스를 상속받는 자식클래스는 반드시 부모 클래스의 추상메서드를 구현해야한다.

=> 자식이 메서드를 오버라이딩 하게 강제하기 위해 존재한다.

구현방법: abstract 리턴타입 메서드명( );

 

 

추상클래스

  1. 추상메서드를 멤버로 갖는 클래스
  2. 일반메서드를 멤버로 가질 수 있다.
  3. 추상메서드가 하나라도 포함되어 있다면 추상클래스가 되어야 한다.
  4. 객체를 생성 할 수 없다.

=>구현은 자식 클래스가 하도록 메서드의 기능을 비워놓고 싶을 때 사용!

구현방법: abstract class 클래스명{ 추상메서드 } 

abstract class Shape{//추상클래스
	String name;
	Shape(String name){
	      this.name=name;
	   } 

	void f() {
		System.out.println("추상클래스에서 출력");
	}
	
	abstract void draw();//추상메서드
	}
    
class Circle extends Shape{

	public Circle(String name) {
	
		super(name);
	}

	@Override
	void draw() {
		System.out.println(name+"을 그림");
	}
	

}
public class Test01InterAbstract {
	public static void main(String[] args) {
		Circle c = new Circle("도넛");
		c.draw();
		c.f();//추상클래스에서 일반 메서드 사용가능
        
        //결과
        //도넛을 그림
		//추상클래스에서 출력
	}
}