상속 및 재정의 검사

사유지

1. 상속

Java의 상속에는 부모 클래스(상속 클래스)와 자식 클래스(상속 클래스)가 있습니다.

자식 클래스는 부모 클래스의 필드, 생성자 및 메서드를 상속합니다.

그러나 private 에 연결된 액세스 제한자는 상속할 수 없습니다.

public ParentClass{

}

public childClass extends ParentClass {

}

//상속클래스의 문법

1 – 1 메서드 재정의

자식은 부모 클래스의 메서드를 재정의합니다.

재정의 부분은 메서드의 실행 블록입니다.

반환 유형, 메소드 이름 및 메소드의 매개변수는 변경할 수 없습니다.

@override
public void method1(String var1){

}

//오버라이드 메소드의 문법

1 – 2 @ < 참고

컴파일 시 확인( @override )

예와 아니오의 차이는 다음과 같습니다.

public ParentClass {
public void method1(String var1){
 }
}

public ChildClass extends ParentClass {
//@override 가 없으면 오류, 문법체크를 해줌
public void method1(String var1){
  }
 }

1 – 3가지 예

package classic;

public class ParentClass {
	//필드
	public String name;
	
	//생성자
	public ParentClass() {
		System.out.println("부모 기본 생성자");
	}

}

부모 클래스에서 필드 이름을 선언하고 기본 생성자를 만듭니다.

package classic;

public class ChildClass extends ParentClass {

}

부모 클래스 상속.

package classic;

public class InheritanceMain {

	public static void main(String() args) {
		// TODO Auto-generated method stub
		//부모 객체
		ParentClass p1 = new ParentClass();
		p1.name = "name1";
		System.out.println(p1.name);
		
		//자식객체
		ChildClass c1 = new ChildClass();
		c1.name = "자식 name1";
		System.out.println(c1.name);
	}

}
부모 기본 생성자
name1
부모 기본 생성자
자식 name1

아무것도 존재하지 않아도 하위 클래스가 상속되므로 c1.name을 사용할 수 있습니다.

출력을 봐

차일드 클래스 c1 = 새 차일드 클래스(); 문에서 기본 상위 생성자의 출력으로 판단

자식 생성자로 만들어도 부모 생성자가 호출됩니다.

package classic;

public class ChildClass extends ParentClass {
	public ChildClass() {
		System.out.println("자식 클래스 생성자");
	}


}

“자식 클래스 생성자”를 인쇄할 때 ChildClass에 생성자가 생성되는 경우.

출력을 다시 Main으로 가져오고,

부모 기본 생성자       //      ParentClass p1 = new ParentClass();
name1                 //       System.out.println(p1.name);
부모 기본 생성자
자식 클래스 생성자    //       ChildClass c1 = new ChildClass();
자식 name1            //       System.out.println(c1.name);

이렇게 발급된다

확실히 부모 클래스 생성자가 호출된 후 자식 클래스 생성자가 방출된 다음 name 메서드가 방출됩니다.무슨 일이 있었는지 볼 수 있습니다