Java

생활코딩 JAVA 상속 - 상속과 생성자 (+수업을 마치며)

소댓 2023. 1. 9. 15:21

5. 상속과 생성자

 

- Cal을 계승했다면, Cal이 인스턴스로 계승될 때 반드시 해야하는 일이 생성자에 들어 있음

> 따라서, 생성자를 Cal3도 당연히 실행해야 계승되는 것

>> 생성자가 있는 클래스를 상속받았다면, 부모 클래스를 반드시 생성자를 만들어 호출해야 함

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Cal{
    int v1,v2;
    Cal(int v1, int v2){
        System.out.println("Cal init!!");
        this.v1 = v1; this.v2 = v2;
    }
    public int sum() {return this.v1+v2;}
}
class Cal3 extends Cal{
 
    Cal3(int v1, int v2) {
        super(v1, v2);
        System.out.println("Cal3 init!!");
    }
    public int minus() {return this.v1-v2;}
}
public class InheritanceApp {
    public static void main(String[] args) {
        Cal c = new Cal(2,1);
        Cal3 c3 = new Cal3(2,1);
        System.out.println(c3.sum()); // 3
        System.out.println(c3.minus()); // 1
    }
}
cs

 

6. 수업을 마치며

 

- Polymorphism

상속을 하면 기능이 급격하게 늘어나기 때문에, 클래스끼리 호환성이 떨어지고 클래스의 교환이 어려워짐

> 따라서, 자식 클래스는 자식 클래스로, 부모 클래스는 부모 클래스로 동작하도록 규제하는 테크닉 = Polymorphism

 

- Access Modifiers

접근 제어자는 클래스, 메소드, 변수를 사용자들이 아무거나 건드리지 못하도록 제한하는 기능

사용자에게 제공하려고 하는 조작 장치만 손댈 수 있게 하고 그 외에는 건드리지 못하게 규제하는 것이 '접근 제어자'

 

- Final

 내가 만든 클래스를 다른 사람이 더 이상 상속하지 못하게 하거나, 메소드를 Overriding 못하게 하거나, 변수를 마음대로 수정하지 못하게 하기 위한 기능

 

- Abstract

클래스를 상속해서 사용하고자 하는 사용자에게 어떤 메소드는 꼭 구현하라고 강제하고 싶을 때 사용하는 기능

 

>> 상속은 컴퓨터 언어의 자유도를 놀랍게 끌어올린 기능이지만, 이러한 기능을 사용하기 위해서는 다양한 규제가 필요함