<Point.java> - super class

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
package ex01.상속review_input;
 
public class Point { // super class
    protected int x, y;
    //protected: 보호모드, 상속받은 자손들 접근 가능 
 
    //생성자함수 2개 이상
    public Point() {
        x=y=50;
        System.out.println("Point daeault 생성자함수");
    }
    
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
        System.out.println("Point 매개변수2개 생성자함수");
    }
    
    public Point(int x) {
        this.x = x;
        System.out.println("Point 매개변수1개 생성자함수");
    }
 
    
    //getter, setter method
    public int getX() {
        return x;
    }
 
    public void setX(int x) {
        this.x = x;
    }
 
    public int getY() {
        return y;
    }
 
    public void setY(int y) {
        this.y = y;
    }
    
    
    //output method
    public void display() {
        System.out.print("x = " + x + "\ty = " + y);
    }
}
 
cs

변수정의를 private로 쓰면->상속으로 연결된 클래스들이 같은 패키지 안에 있다면 사용가능

변수정의를 protected로 쓰면->상속으로 연결된 클래스들이 다른 패키지 안에있어도 사용가능

                                         ->보호모드, 상속받은 자손들 접근 가능 


<Circle.java>

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
package ex01.상속review_input;
 
import java.util.Scanner;
 
public class Circle extends Point { // sub class
    private int r;
    
    //생성자함수
    public Circle() {
        //main에서 매번 값 셋팅하기 싫다면
        //2.Scanner 이용해서 좌표값 입력받아서 전달
        System.out.println("Circle daeault 생성자함수");
        Scanner sc = new Scanner(System.in);
        System.out.print("r입력 => ");
//        this.r=sc.nextInt(); //방법1))this이용
        setR(sc.nextInt());  //방법2))set이용 
 
    }
    
    public Circle(int r) {
        System.out.println("Circle 매개변수1개 생성자함수");
        this.r = r;
    }
 
    public Circle(int x, int y, int r) {
        super(x,y);
        this.r = r;
        System.out.println("Circle 매개변수3개 생성자함수");
    }
    
    
    //getter, setter method
    public int getR() {
        return r;
    }
 
    public void setR(int r) {
        this.r = r;
    }
 
    
    // output method
    public void display() {
        //super이용  -  부모의 display부르면 됨
        super.display(); //=> 부모의 display의미, super는 객체 
        System.out.println("\tr = " + r);
//        System.out.println("x = " + getX() + "\ty = " + getY() + "\tr = " + r);
    }
 
    
}
 
cs

▶변수 r을 입력받은 값으로 변경하는 방법

   1)this이용: this.r = sc.nextInt();

   2)set이용: setR(sc.nextInt());

super.display(); -> 부모의 display()메서드를 의미

                       -> 여기서 super는 객체 


<Rectangle.java>

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
package ex01.상속review_input;
 
public class Rectangle extends Point { // sub class
    private int x2, y2;
 
    //생성자 함수
    public Rectangle() {
        System.out.println("Circle daeault 생성자함수");
        x2 = y2 = 70;
    }
    
    public Rectangle(int x2, int y2) {
        this.x2 = x2;
        this.y2 = y2;
        System.out.println("Point 매개변수2개 생성자함수");
    }
    
    public Rectangle(int x, int y, int x2, int y2) {
        super(x,y);
        this.x2 = x2;
        this.y2 = y2;
        System.out.println("Point 매개변수4개 생성자함수");
    }
    
    
    //getter, setter method
    public int getX2() {
        return x2;
    }
    
    public void setX2(int x2) {
        this.x2 = x2;
    }
 
    public int getY2() {
        return y2;
    }
 
    public void setY2(int y2) {
        this.y2 = y2;
    }
    
    
    // output method
        public void display() {
            System.out.println("x = " + getX() + "\ty = " + getY() 
                              + "\tx2 = " + x2 + "\ty2 = " + y2);
        }
}
 
cs

<MainEntry.java> - ver1

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
package ex01.상속review_input;
 
import java.util.Scanner;
 
public class MainEntry {
    public static void main(String[] args) {
        
        Circle c = new Circle(); //만약 매개변수가 없는 Circle()생성자가 없다면 오류날것 
        System.out.println("\n1)초기값");
        c.display(); //초기값 출력
        
        System.out.println("\n2)값 셋팅");
        c.setR(10); 
        c.setX(100);
        c.setY(20);
        c.display(); //값 셋팅하고 출력
 
        System.out.println("================================");
        
        Rectangle r = new Rectangle();
        r.display(); //초기값 출력
        
        r.setX(5); 
        r.setX2(6);
        r.setY(7);
        r.setY2(8);
        r.display(); //값 셋팅하고 출력
        
    }
 
}
 
cs

 

   Circle c = new Circle();

->만약 매개변수가 없는 Circle()생성자가 없다면 오류날것

  (다른 모양의 생성자가 있을 경우만,다른 모양의 생성자가 있으면 default생성자는 기능을 상실함)

->만약 default 생성자만 존재한다면 따로정의하지 않아도 생기기때문에 상관 없다

 

▶생성자

  -사용자가 생성자 함수를 재정의하면 default생성자는 기능상실

    ->생략불가능(필요하면 직접 써야함)

  -생성자가 하나도 없다면, default생성자는 쓰지 않아도 자동으로 생성되어있음


<MainEntry.java> - ver2

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
package ex01.상속review_input;
 
import java.util.Scanner;
 
public class MainEntry {
    public static void main(String[] args) {
        //main에서 매번 값 셋팅하기 싫다면
        //2.Scanner 이용해서 좌표값 입력받아서 전달
        Circle c = new Circle(); //만약 매개변수가 없는 Circle()생성자가 없다면 오류날것 
        c.display(); //초기값 출력
 
        System.out.println("================================");
        
        //main에서 매번 값 셋팅하기 싫다면
        //1.Scanner 이용해서 좌표값 입력받아서 전달
        Scanner sc = new Scanner(System.in);
        System.out.print("x값 => "); 
        int x = sc.nextInt();
        System.out.print("y값 => "); 
        int y = sc.nextInt();
        System.out.print("x2값 => "); 
        int x2 = sc.nextInt();
        System.out.print("x2값 => "); 
        int y2 = sc.nextInt();
        
        Rectangle r = new Rectangle();
        r.setX(x); 
        r.setY(y);
        r.setX2(x2);
        r.setY2(y2);
        r.display(); //값 셋팅하고 출력
 
    }
 
}
 
cs

Point daeault 생성자함수
Circle daeault 생성자함수
r입력 => 5
x = 50 y = 50 r = 5
================================
x값 => 6
y값 => 8
x2값 => 68
x2값 => 6
Point daeault 생성자함수
Circle daeault 생성자함수
x = 6 y = 8 x2 = 68 y2 = 6

+ Recent posts