19.04.09 상속, final

Back-End/Java 2019. 4. 9. 17:39
728x90
반응형

-상속-


부모가 자식에게 물려주는 행위로 자식은 상속을 통해서 부모가 물려준것을 자연스럽게 이용할 수 있다.


부모클래스의 생성자 호출

-자식 클래스의 생성자 최상단에서 "super(매개값);" 명령어를 사용해서 부모클래스의
 생성자를 호출 한다.


상속하는 법

- public class "자식클래스 이름" extends "부모클래스 이름"


-예제 및 출력결과-

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
package chap07Inheritance;
 
public class chap07Inheritancefather {
    String model;
    String color;
    
    public chap07Inheritancefather()
    {
        System.out.println("부모 클래스의 생성자가 호출되었습니다.");
    }
    
    String name(String n) 
    {
        System.out.println("부모"+n+"메서드가 호출 되었습니다. ");
        return n;
    }
    
    public void print() 
    {
        System.out.println("super명령어 사용 메서드 호출");
    }
    
    public static void main(String[] args) {
        
 
    }
}
 
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
package chap07Inheritance;
 
public class chap07Inheritance extends chap07Inheritancefather{ //자식인 chap07Inheritance클래스가 부모인 chap07Inheritancefather클래스를 선택해서 호출함
    int channel;
    
    chap07Inheritance (String model, String color, int channel)
    {
    super(); //부모클래스의 생성자 호출
    this.model = model; //부모클래스 필드 호출
    this.color = color; //부모클래스 필드 호출
    this.channel = channel;
    }
    
    String name(String n) //name 메소드를 부모 클래스에서 받고 내용을 수정한다.
    {
        System.out.println("오버라이딩 된 자식"+n+"메소드가 호출 되었습니다. ");
        return n;
    }
    
    public void print() //상속받은 부모클래스의 메소드를 호출
    {
        super.print();
    }
    
    void turnOnDmb() 
    {
        System.out.println("모델이름은"+model+"입니다.");
        System.out.println("색깔은"+color+"입니다.");
        System.out.println("채널은"+channel+"입니다.");    
    }
}
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package chap07Inheritance;
 
public class chap07InheritanceTest {
 
    public static void main(String[] args) {
        String n = "클래스";
        
        
        chap07Inheritance chap07Inheritance = new chap07Inheritance("모델이름 1","갈색",3);
        
        chap07Inheritance.turnOnDmb(); 
        
        chap07Inheritance.name(n); //오버라이딩으로 재정의된 자식 클래스의 메소드를 호출한다.
        
        chap07Inheritance.print(); //super 명령어를 사용해서 상속받은 부모클래스의 메소드를 호출
    }
}
 
cs


-final-

final이 지정되면 초기값 설정 후, 더 이상 값을 변경할 수 없다.

또한 final 클래스는 부모 클래스가 될수 없어 자식 클래스를 만들 수 없다. 메소드도 마찬가지 이다.


-final 클래스호출시 오류-


-final 메소드 호출-



728x90
반응형
: