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
728x90