19일차 추상클래스

추상 클래스(불완전한 클래스)

추상적인 내용만 정의하고 있는 클래스로 구체적인 내용은
하위 클래스에서 구현되도록 해놓은 클래스

특징

  • 추상클래스는(부모) 클래스들의(자식) 공통요소들을 가상화 시켜놓는다.
  • 객체화는 가능하나 잘 사용하지 않는다. (목적에 어긋난다.)
  • 부모 추상클래스의 역할은 단지 자식 클래스를 만들 때 도와주는 역할을 수행하기 위해 존재한다. (다형성:polymorphism)
  • 자식 클래스에서 재정의할 메서드의 이름만 가지고 있다.
    즉, {}(바디)를 가지지 않는다.
  • 그 메서드를 추상 메서드라고 하며, abstract 키워드가 앞에 붙는다.
  • 하지만 일반 메서드도 선언 가능하다.

선언

abstract 추상클래스명{
abstract 추상메서드명();
}

추상메서드는 자식클래스에서 강제적으로 반드시 재정의 해야한다.
강제성을 부여한다.

  • 추상에서 abstract void draw(); 선언만 해놓을 수 있음! -> 자식클래스 상속해서
    재정의 해야 한다.

(실습예제)

public abstract class Shape {
//일반변수 선언
double area;
//추상메서드 : 면적 구하기
abstract void showArea(double w, double h);

//일반메서드 : final : 자식클래스에서 재정의 하는것을 막기위해서, 사용의 목적만! 
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²");
}}

(다른 클래스에서 실행)

public class Board {
public static void main(String[] args) {
new Rect().showArea(10, 50);
new Tri().showArea(30, 15.9);
}}

(실행결과)

좋은 웹페이지 즐겨찾기