본문 바로가기
Java

[Java] Inheritance(상속)2

by 엘딘 2022. 4. 11.

 

InheritanceClass
public class inheritanceClass {
    public static void main(String[] args) {

    	//기본생성자 호출	
        MyClass cls = new MyClass();

        //매개변수 생성자 호출	
        MyClass cls1 = new MyClass(1, "aaa");

        // ChildClass를 호출해주면 ParentClass부터 호출한 후 ChildClass를 호출
        ChildClass cc = new ChildClass();

        ChildClass cc1 = new ChildClass(11,"홍길동", 180.1);
    }
}
================================================================
MyClass Myclass()
//두번째 생성자에서 this()로 인해 기본생성자도 호출됨
MyClass Myclass()
MyClass Myclass(int number, String name)
ParentClass ParentClass()
ChildClass ChildClass()

 

MyClass
public class MyClass {
	
    private int number;
    private String name;

    // 기본 생성자(매개변수가 없는 생성자)
    public MyClass() {
    	//this(0,"") 초기값 설정가능 but 매개변수가 있는 생성자에 this를 사용시 사용 불가!
    
        System.out.println("MyClass Myclass()");
    }

    // 매개변수가 있는 생성자
    // this: 멤버변수를 구분할때 사용하는 구분자
    public MyClass(int number, String name) {
        this();		// 기본 생성자 호출
                    // 위 메소드의 this 같이 사용 불가

        this.number = number;
        this.name = name;
        System.out.println("MyClass Myclass(int number, String name)");
    }

}

 

 

ParentClass
public class ParentClass {

    private int number;
    private String name;

    public ParentClass() {		// 기본 생성자 
        System.out.println("ParentClass ParentClass()");
    }



    public ParentClass(int number, String name) {	// 매개변수 있는 생성자 
        this.number = number;
        this.name = name;
    }
}

 

 

ChildClass
public class ChildClass extends ParentClass {

    private double height;


    public ChildClass() {
	//this(1.12);				// this - 현재 클래스의 변수를 가져옴
    	//super();				// 부모클래스의 기본 생성자를 호출
                                  		// super는 부모클래스로 접근
    	//super(123, "hello");			// super - 부모 클래스의 생성자의 형태를 알려줌(2번째 생성자)                                        
        System.out.println("ChildClass ChildClass()");
    }


    public ChildClass(double height) {
    	//super(234, "world");
        this.height = height;
    }


    public ChildClass(int number, String name, double height) {
        super(number, name);
        this.height = height;
    }

}

 

 

super

 super.부모메소드( toString() )를 통해 부모클래스에서 정의된 메소드를 재정의하지않고 가져와서 씀

 super();는 부모의 생성자를 가져옴

public class Employee extends Person{
    private String dept;
    
    public String getDept(){
    	return dept;
    }
    
    public void setDept(String  dept){
    	this.dept = dept;
    }
    
    public String toString(){
    	return super.toString() + dept;	
    }
}

 

'Java' 카테고리의 다른 글

[Java] Override  (0) 2022.04.12
[Java] Interface  (0) 2022.04.11
[Java] Inheritance(상속)  (0) 2022.04.11
[Java] HashMap  (0) 2022.04.10
[Java] Generic  (0) 2022.04.10

댓글