프로그래밍 언어/JAVA

자바 상속이란?

원원 2017. 12. 1. 08:10

안녕하세요. 오늘은 자바 상속에 대해 알아보겠습니다.

상속이란 기존의 클래스에 새로운 것들을 정의하여 클래스를 정의하는 것 입니다.



상속 기본개념

자식클래스에서는 부모클래스의 변수와 메소드를 사용 할 수 있게 됩니다.

class 자식클래스 extends 부모클래스 이런식으로 선언하게 됩니다.

(자식클래스 = 하위클래스 = 서브클래스 , 부모클래스 = 상위클래스=수퍼클래스)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class child extends parent{
    void seeInfor(){
        System.out.println("home price : " + homePrice);
        System.out.println("home size : " + homeSize);
        seeDish();
    }
}
 
class parent{
    int homePrice = 10;
    int homeSize = 100;
    String todayDish = "meat";
    
    void seeDish()
    {
        System.out.println(todayDish);
    }
}
cs




상속에서 생성자 사용하기

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
29
30
31
32
33
 public class main {
    public static void main(String args[]) {
        child ch = new child();
        ch.seeInfor();
    }
}
 
class child extends parent {
 
    public child() {
        System.out.println("child");
    }
 
    void seeInfor() {
        System.out.println("home price : " + homePrice);
        System.out.println("home size : " + homeSize);
        seeDish();
    }
}
 
class parent {
    int homePrice = 10;
    int homeSize = 100;
    String todayDish = "meat";
 
    public parent() {
        System.out.println("parent");
    }
 
    void seeDish() {
        System.out.println(todayDish);
    }
}
cs

결과

parent

child

home price : 10

home size : 100

meat

상속에서 생성자를 사용하게되면 먼저 부모클래스의 생성자를 호출하고 그 다음에 자식클래스의 생성자를 호출하게 됩니다.



super();

1
2
3
4
5
6
class child extends parent {
    public child() {
        super();
        System.out.println("child");
    }
}
cs
3번째줄 super()로 부모클래스의 생성자를 먼저 호출하게 됩니다. super()의 위치는 맨 처음에 나와야 합니다.

그러나 super()는 명시적되어있지 않으면 자동으로 명시가 됩니다. super()을 통해서 인자를 전달 할 수 있습니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class main {
    public static void main(String args[]) {
        child ch = new child("GOOD");
    }
}
 
class child extends parent {
    public child(String myState) {
        super(myState);
    }
}
 
class parent {
    public parent(String childState) {
        System.out.println("child State =" + childState);
    }
}
cs

결과

child State =GOOD