반응형

안녕들 하시죠 !

이번시간에는 Java의 추상 클래스에대해 알아보겠습니다.

 

추상 클래스란?

서브 클래스가 구현할 메소드를 명료하게 알려주는 인터페이스 역할.

추상 클래스를 책의 목차에 비유할 수 있고, 서브 클래스는 목차에 따라 작성된 책이라고 표현할 수 있다.

서브 클래스에서 추상 메소드를 목적에 맞게 구현하여 다형성을 실현할 수 있다.

코드를 구현하는 클래스가 아니라 단순히 껍데기만 있는 클래스이다.

 

 

추상 클래스 Language를 상속받아 서브 클래스에서 오버라이딩하여 구현한 모습

 

주의할 점

 

* 추상 클래스는 객체를 생성할 수 없다.

 

* 추상 메소드를 가지고 있으면 반드시 추상 클래스로 선언되어야 한다.

 

* 서브 클래스에서 추상 클래스에 선언된 추상 메소드를 모두 구현해야 한다. 

 

 

 

참고서적의 간단한 예제를 풀어보겠습니다.

 

다음 추상 클래스 Calculator를 상속받은 GoodCalc 클래스를 구현하라.

 

1
2
3
4
5
abstract public class Calculator {
    public abstract int add(int a, int b); // 두 정수의 합을 구하여 리턴
    public abstract int substract(int a, int b); // 두 정수의 차를 구하여 리턴
    public abstract double average(int[] a); // 배열에 저장된 정수의 평균 리턴
}
cs

 

추상 클래스인 Calculator는 add(), subtract(), average() 메소드를 추상 메소드로 선언하였을 뿐 어떻게 구현할지는 지시하지 않는다.

어떤 인자가 전달되고 어떤 타입의 값이 리턴되는지만 지정할 뿐이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class GoodCalc extends Calculator {
    
    @Override
    public int add(int a, int b) {
        return a + b;
    }
 
    @Override
    public int subtract(int a, int b) {
        return a - b;
    }
 
    @Override
    public double average(int[] a) {
        double sum = 0;
        for (int i = 0; i < a.length; i++) {
            sum += a[i];    
        }
        return sum/a.length;
    }
    
    public static void main(String[] args) {
        GoodCalc c = new GoodCalc();
        System.out.println(c.add(23));
        System.out.println(c.subtract(23));
        System.out.println(c.average(new int[] {2,3,4}));
    }    
}
cs

 

추상 클래스 Calculator를 상속받은 서브 클래스 GoodCalc에서 추상 메소드인 add(), subtract(), average()를 구현했습니다.

 

오늘은 여기까지입니다 감사합니다 !

 

 

참고서적 황기태,김효수 「명품 JAVA Programming」

'Java' 카테고리의 다른 글

Java의 문자열 분리 (StringTokenizer)  (0) 2019.05.16
Java의 == 연산자와 equals 메소드  (0) 2019.05.13
Java의 생성자  (0) 2019.04.29
Java의 length필드 사용법  (1) 2019.04.29
Java의 변수와 데이터타입 (Data type)  (0) 2019.04.21

+ Recent posts