package ex0722;

public class Ex05_Inheritance {
	public static void main(String[] args) {
		Sample5 ss1 = new Sample5();
		ss1.disp();
		System.out.println();
	
		Sample5 ss2 = new Sample5(77);
		ss2.disp();
		System.out.println();
		
		System.out.println(ss1.equals(ss2)); // 주소비교

	}
}
class Test5 {
	int x;
	
	public Test5() {
		x = 0;
		System.out.println("상위 클래스-인자없는 생성자");
	}
	
	public Test5(int x) {
		this.x = x;
		System.out.println("상위 클래스-인자 하나인 생성자");
	}
	
	public void print() {
		System.out.println(x);
	}
}

class Sample5 extends Test5{
	int a;
	
	public Sample5() { 
		// super(); 이 생략된 것임
		a = 0;
		System.out.println("하위 클래스-인자없는 생성자");
	}
	
	public Sample5(int x) {
		// super(); 와 this는 동시에 쓸 수 없다.
		this(10, x); // this([인수]); 가 있으면 super([인수]);는 있을 수 없다.
		System.out.println("하위 클래스-인자 하나인 생성자");
	}
	
	public Sample5(int a, int x) {
		super(x);
		this.a = a;
		System.out.println("하위 클래스-인자 두개인 생성자");
	}
	
	public void disp() {
		System.out.println(a+","+x);
	}
}

this.a // 내 자신의 필드 a
super.a // 아버지의 필드 a

this(10); // 자신의 클래스에서 다른 생성자를 호출

super(); 
super(10); // 상위 클래스의 인자가 하나인 생성자 몸체 실행

 

 

+ Recent posts