2019.08.23

 

 // 파생 (derive)

 - 기존(부모) 클래스의 필드와 메서드 등의 '자산'을 상속한(inheritance)한 새로운 클래스를 만드는 것

 - 파생될 때는 자산의 상속뿐만 아니라 필드와 메서드를 추가하거나 오버라이드를 할 수도 있다

 

 // 상속 (inheritance)

 - 기존의 클래스(부모 클래스)의 모든 자원과 메서드를 재사용하여 새로운 클래스(자식 클래스)에서 자신의 것처럼 사용

 

 

 // 추상 클래스

 - 키워드 : abstract 

 - 인스턴스를 생성할 수 없거나 또는 생성해서는 안됨

 - 메서드 본체를 정의할 수 없고 내용은 하위 클래스에서 구체화해야한다

 - 추상 메서드를 한개라도 갖는 클래스는 반드시 추상 클래스로 선언해야한다

 - 추상 클래스에서 final, static, private을 지정할 수 없다

 - 추상 클래스안에는 추상 메서드가 반드시 존재해야하고 일반 메서드도 존재할 수 있다

 

 // 추상 메서드

 - 키워드 : abstract

 - abstract는 선언된 클래스에서는 메서드의 실체를 정의할 수 없기 때문에 나로부터 파생된 클래스에서 정의해달라는 의미

 

 

 ex) 추상클래스와 추상메서드

1
2
3
4
5
6
7
8
9
10
11
12
13
 
//추상 클래스(abstract로 선언) = 추상메서드와 일반메서드 공존
public abstract class CC01 {
    //추상메서드 선언
    public abstract void c_abstract();
    
    //일반메서드 선언
    public void c_a(){
        System.out.println("01 c_a() CC01.java");
    }
}
 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
public class BB01 extends CC01{ // 상속
    
    // 추상메서드를 상속 받은 클래스에서 정의
    @Override
    public void c_abstract() {
        System.out.println("02 c_abstract실행 BB01.java"); 
        
    }
    
    public void c_a(){
        System.out.println("03 c_a() BB01.java");
    }
 
}
 

 

1
2
3
4
5
6
7
8
9
10
11
12
 
public class AA01 {
 
    public static void main(String[] args) {
        // CC01 c = new CC01(); 오류, 추상 클래스는 인스턴스를 생성할 수 없다
        BB01 b = new BB01();
        b.c_a(); // 03 3_a() BB01.java
        b.c_abstract(); // 02 c_abstract실행 BB01.java
    }
}
 
 

+ Recent posts