사유지
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 메서드가 방출됩니다.무슨 일이 있었는지 볼 수 있습니다



