추상 클래스는 구체적으로 구현되지 않은 추상 메서드를 포함할 수 있는 클래스입니다. 이러한 추상 클래스는 객체를 직접 생성할 수 없으며, 상속을 통해서만 사용될 수 있습니다. 추상 메서드는 서브클래스에서 반드시 구현해야 합니다.
추상 메서드 포함 가능: 추상 메서드는 메서드 선언만 있고 구현은 없는 메서드입니다. 하위 클래스는 반드시 이 추상 메서드를 구현해야 합니다.
객체 생성 불가: 추상 클래스는 인스턴스화할 수 없습니다. 즉, 직접 객체를 생성할 수 없습니다.
일반 메서드와 필드 포함 가능: 추상 클래스는 추상 메서드뿐만 아니라 일반 메서드와 필드도 가질 수 있습니다.
상속을 통해 사용: 추상 클래스는 상속을 통해 하위 클래스에서 구현된 형태로 사용됩니다.
package Abstract;
abstract class Shape{ //abstract Super class
double result = 0;
public abstract double calc(); //추상 메소드
public abstract void draw();
public void show() {
System.out.println("Shape Super Class");
}
} //shape end
class Circle extends Shape{
double r = 5.0;
@Override
public double calc() {
result = r * r + Math.PI;
return result;
}
@Override
public void draw() {
System.out.println("원의 넓이: " + calc() + "인 원을 그렸습니다.");
}
} //Circle end
class Triangle extends Shape{
double h = 5.0;
double w = 3.0;
public double calc(){
result = (h * w) / 2;
return result;
}
public void draw() {
System.out.println("삼각형의 넓이: " + calc() + "인 삼각형을 그렸습니다.");
}
}//Triangle end
public class MainEntry {
public static void main(String[] args) {
// Shape sh = new Shape(); // 자체적으로 객체 생성 할 수 없다.
Triangle tr = new Triangle();
tr.draw();
Circle cr = new Circle();
cr.draw();
}
}
삼각형의 넓이: 7.5인 삼각형을 그렸습니다.
원의 넓이: 28.141592653589793인 원을 그렸습니다.