추상 클래스(불완전한 클래스)
추상적인 내용만 정의하고 있는 클래스로
구체적인 내용은 하위 클래스에서 구현되도록 해놓은 클래스
추상클래스는(부모) 클래스들의(자식) 공통요소들을 가상화 시켜놓는다
객체화는 가능하나 잘 사용하지 않는다(목적에 어긋난다)
부모 추상클래스의 역할은 단지 자식 클래스를 만들 때 도와주는 역할을 수행하기 위해 존재한다(다형성)
자식클래스에서 재정의할 메서드의 이름만 가지고 있다
즉, {} 바디를 가지지 않는다
그 메서드를 추상 메서드라고 하며, abstract 키워드가 앞에 붙는다
하지만 일반 메서드도 선언 가능하다
abstract 추상클래스명{
abstract 추상 메서드();
}
추상 메서드는 자식 클래스에서 강제적으로 반드시 재정의 해야 한다
강제성을 부여한다
package day19;
public abstract class Shape {
}
자동으로 abstract가 생성 된다
package day19;
public abstract class Shape {
double area;
abstract void showArea(double w, double h); // {} body가 없으므로 앞에 abstract 붙여준다
//메서드에 파이널을 붙이면 절대 재정의 할 수 없다 => 자식 클래스에서 재정의x, 사용만 하라는 목적
final void function() {
System.out.println("추상 클래스의 일반 메서드 입니다");
}
}
//사각형 넓이 구하기
class Rect extends Shape{
@Override
void showArea(double w, double h) {
area = w*h;
System.out.println("넓이: "+area+"cm²");
}
}
//삼각형 넓이 구하기
class Tri extends Shape{
@Override
void showArea(double w, double h) { //넓이를 구하라는 강제성 재정의!
area = (w*h)/2;
System.out.println("삼각형 넓이: "+area+"cm²");
}
}
package day19;
public class Board {
public static void main(String[] args) {
new Rect().showArea(10, 50);
//값만 확인하기 위해 객체 만들지 않고, new를 바로 썼다.
new Tri().showArea(30, 15.9);
}
}
넓이: 500.0cm²
삼각형 넓이: 238.5cm²
728x90
'Dev. > java' 카테고리의 다른 글
Java :: 인터페이스 (0) | 2022.07.03 |
---|---|
[Java] TMS 대중교통 터미널 시스템 만들기 (0) | 2022.06.17 |
Java :: 다형성/ 싱글턴 패턴 (0) | 2022.06.12 |
Java Casting/instance of (0) | 2022.06.11 |
Java 클래스 배열 (0) | 2022.06.11 |
댓글