IT/Java

자바 상속, super() 생성자 호출

노마드오브 2018. 7. 17. 00:23

super() 생성자 호출

부모클래스의 기본생성자가 아닌 실제로 존재하는 다른 오버로딩 생성자를

명시적으로 호출 가능하게 해줌.





파일명 : Test9.java



package com.test;


class MyPoint2D {

int x;

int y;


// 생성자  x y 받는 생성자

MyPoint2D(int x, int y) {

super();

this.x = x;

this.y = y;

}

// prn() 메소드  출력  "x, y"

void prn() {

System.out.print(x+", "+y);

}

}



class MyPoint3D extends MyPoint2D { // 상속 MyPoint2D

int z;

// 기본생성자

MyPoint3D() {

// 부모클래스의 기본생성자 호출

// 기본생성자 으면 생성자 지정

// 부모의 존재하는 생성자 호출

//this(1, 2, 3); // this() 생성자 호출이 오면, super()는 삽입안해줌

super(1, 2); // this()와 super() 중 하나만 올 수 있다 

}

// x y z 받는 생성자

MyPoint3D(int x, int y, int z) {

super(x, y);

this.z = z;

}

// prn() 메소드 오버라이딩  "x, y, z"

@Override

void prn() {

super.prn();

System.out.println(", " + z);

}

}



public class Test9 {


public static void main(String[] args) {

MyPoint3D p = new MyPoint3D();

p.prn();

MyPoint3D p2 = new MyPoint3D(10, 20, 30);

p2.prn();

}


}