☕ Java

[Java] Day11 - 추상 클래스

harveydent 2023. 5. 17. 10:04
728x90

추상 클래스

추상 메서드

추상 메서드란 자식 클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메서드를 의미합니다. 추상 메서드를 선언하여 사용하는 목적은 추상 메서드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메서드를 구현하도록 하기 위함입니다.

추상 메서드 선언

abstract 반환타입 메서드명();

위와 같이 선언부만 있고 구현부가 없다는 의미로 선언부 끝에 바로 세미콜론(;)을 작성합니다.

 

추상 클래스

하나 이상의 추상 메서드를 포함하는 클래스를 가리켜 추상 클래스라고 합니다. 반드시 사용되어야 하는 메서드를 추상 클래스에 추상 메서드로 선언해 놓으면, 이 클래스를 상속받는 모든 클래스에서는 이 추상 메서드를 반드시 재정의해야 합니다.

 

추상클래스 특징

  • 객체화(인스턴스화) 불가
  • 추상 메서드를 가질 수 있음
  • 생성자를 가질 수 있지만 new 불가(객체화 불가)

실습

package class01;

// "포켓몬" 객체는 없는것아닌가요?
// "피카츄, 파이리" 객체만 있으면되는거아닌가요?

// [ 추상 클래스 ]
// "객체화 하는것이 목표가 아니라,
//	설계를 하는것이 목표였던 클래스들"
// "클래스들의 기준이 되는것이 목표"
abstract class Shape {
	String name;
	double area;
	abstract void draw(); // 추상메서드
}

class Rect extends Shape {
	// 오버라이딩을 강제
	@Override
	void draw() {
		System.out.println("네모 그리기");
	}
}

class Circle extends Shape {
	@Override
	void draw() {
		System.out.println("원 그리기");
	}
}

class Tri extends Shape {
	@Override
	void draw() {
		System.out.println("세모 그리기");
	}
}

public class Test02 {

	public static void main(String[] args) {
		
//		Shape s = new Shape(); // 추상클래스이기 때문에 객체화 불가능
		Circle c = new Circle();
		c.draw();
		Rect r = new Rect();
		r.draw();
	}
}

GitHub

https://github.com/Qkrwnsgus0522/Java

 

GitHub - Qkrwnsgus0522/Java

Contribute to Qkrwnsgus0522/Java development by creating an account on GitHub.

github.com

 

728x90