언어/Java

기초 #10. 추상 클래스 Shape (추상클래스 예제편)

뭉지(moonz) 2020. 9. 1. 16:32
반응형

▶추상클래스에는 추상메서드와 일반 메서드 둘다 정의될 수 있고,

▶추상메서드를 정의할 때는 블록 구현이 없는 것이 특징이다.

 

1. 추상 클래스 Shape 코드와 상속받는 두 클래스 Rect, Tri

public abstract class Shape {
	double area;	//만약 final static double area;로 선언한다면 하위클래스에서 사용하지 못함.
    
    public abstract void draw(double w, double h);	//블록{}이 구현되지않은 추상메서드! 무조건 재정의.
    final static void function() {
    	System.out.println("추상 클래스의 정적 메서드입니다. 재정의 못해요.");
    }
}

class Rect extends Shape {
	public void draw(double w, double h) {
    	System.out.println("직사각형 점 4개 연결");
        area = w*h;
        System.out.println("넓이: " + area);
    }
}

class Tri extends Shape {
	public void draw(double w, double h) {
    	System.out.println("삼각형 점 3개 연결");
        area=(w*h)/2;
        System.out.println("넓이: " + area);
    }
}

▶강제로 재정의하도록 하는 것이 abstract 키워드라면

▶강제로 재정의를 못하도록 하는 것은 final static 키워드이다.

 

 

2. 실행 코드인 Board 클래스

public class Board {
	public static void main(String[] args) {
    	new Rect().draw(10,50);	//Rect r = new Rect(); r.draw(10,50); 와 같은 구문.	
        new Tri().draw(30,5.6);	//즉, 변수 설정 없이 바로 접근해준 것. 
        //new Rect()를 하나의 객체로 볼 수 있고, 그 객체의 draw()를 호출한 것.
        
        Shape.function();	//static 메서드는 클래스를 통해서 접근 가능하다. new Rect().function(); (x)
    }
}

결과는 다음과 같다.

반응형