본문 바로가기

카테고리 없음

상속, 추상메소드, 인터페이스

수퍼클래스의 인자 있는 생성자
서브 클래스 생성자
name= lee

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
34
35
36
37
38
39
40
package day_11;
 
class Super {
    String name;
    
//    public Super() { // 수퍼 클래스의 디폴트 생성자
//        System.out.println("수퍼 클래스 생성자");
//    }
    
    //↓생성자 오버로딩
    public Super(String name) {
        this.name = name;
        System.out.println("수퍼클래스의 인자 있는 생성자");
    }
    public void showData() {
        System.out.println("name= " + name); // 디스에 네임
    }
}
 
class Sub extends Super { 
    public Sub() {
        // 생성자 호출 전에 다른 문장이 올 수 없다. 
        // 명시적으로 부모클래스의 생성자를 호출해야한다. 
        super("lee"); // 문자열 넣어주기 ???? 왜
        System.out.println("서브 클래스 생성자");
    }
    public void showData() {
        super.showData(); // 부모클래스의 쇼데이타를 호출.
        //System.out.println("name= " + name);
    } //수퍼에 네임
}
 
public class Dat11Ex02 {
 
    public static void main(String[] args) {
        Sub sub = new Sub();
        sub.showData();
    }
 
}
cs

 

Line
Shape
Line
Rect
Circle

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package day_11;
 
 
class Shape { // 슈퍼 클래스
    public Shape next;
    public Shape() {next = null;}
 
    public void draw() {
        System.out.println("Shape");
    }
}
class Line extends Shape {
    public void draw() { //메소드 오버라이딩
        System.out.println("Line");
    }
}
 
class Rect extends Shape {
    public void draw() { // 메소드 오버라이딩
            System.out.println("Rect");
        }
    }
 
class Circle extends Shape {
    public void draw() { // 메소드 오버라이딩
        System.out.println("Circle");
    }
}
 
public class Day11Ex03 {
    static void paint(Shape p) {
        p.draw(); // p가 가리키는 객체 내에 오버라이딩된 draw() 호출
                    // 동적 바인딩
    }
        
 
    public static void main(String[] args) {
//        Shape start, last, obj; // 링크드 리스트로 도형 생성하여 연결
//        start = new Line(); // line 객체연결
//        last = start;
//        
//        obj = new Rect();
//        last.next = obj; // Rect 객체 연결
//        last = obj;
//
//        obj = new Line(); // Line 객체 연결
//        last.next=obj;
//        last = obj;
//        
//        obj = new Circle(); // circle 객체 연결
//        last.next = obj;
//        last = obj;
//        // 모든 도형 출력
//        
//        Shape p = start;
//        while(p != null) {
//            p.draw();
//            p = p.next;
//        }
//        
        Line line = new Line();
        paint(line);
        paint(new Shape());
        paint(new Line());
        paint(new Rect());
        paint(new Circle());
        
    }
 
}
 
cs