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
클래스를 상속해서 사용하고자 하는 사용자에게 어떤 메소드는 꼭 구현하라고 강제하고 싶을 때 사용하는 기능
>> 상속은 컴퓨터 언어의 자유도를 놀랍게 끌어올린 기능이지만, 이러한 기능을 사용하기 위해서는 다양한 규제가 필요함
'Java' 카테고리의 다른 글
[자바의 정석] #CH.2 변수 Variable - 2.1 변수와 상수 (0) | 2023.01.12 |
---|---|
[자바의 정석] #CH.1 자바를 시작하기 전에 (1) | 2023.01.12 |
생활코딩 JAVA 상속 - Overriding vs Overloading / this & super (0) | 2023.01.09 |
생활코딩 JAVA 상속 - (수업소개+)기능의 개선과 발전 (0) | 2023.01.09 |
생활코딩 JAVA 객체 지향 프로그래밍 - 생성자와 this / 클래스와 인스턴스의 활용 (+수업을 마치며) (0) | 2023.01.09 |