** 상속성 : 부모클래스에서 기능을 상속한다.
variable method
추가로 기능을 확장하는 경우
사실상 부모 - 자식 - 메인 순으로 출력하나
겉으로 보기엔 자식 - 메인순과 헷깔릴 수 있다.
그 이유는 자식메소드에 숨어있는 super();가 자동생략이기 때문.
main
Child c = new Child();
//c.name = "일지매";//The field Parent.name is not visible 접근불가 ->protected
c.Parent_method();//부모 - 자식 - 메인 순으로 출력
답: //Parent Parent(int number)
//Child Child()
//Parent Parent_method()
//number = 2
Child cls = new Child(329);
cls.Parent_method();
답: //Parent Parent(int number)
//Parent Parent_method()
//number = 329
Parent
public class Parent {
private int number;
protected String name;
//protected : 자식클래스에서는 접근을 허용하지만 외부에서는 접근차단.
//그러나 private를 사실 setter getter로 설정하여 사용하면되서 protected를 사용하는경우가 대부분
public Parent() { //기본생성자
System.out.println("Parent Parent()");
}
public Parent(int number) {
this.number = number;//Child에서 넘어옴
System.out.println("Parent Parent(int number)");
}
public void Parent_method() {
System.out.println("Parent Parent_method()");
System.out.println("number = "+number);
System.out.println();
}
}
Child
public class Child extends Parent {
public Child() {
//super : 부모클래스의 reference (참조=주소)
//this : 자기 자신의 참조
super(2);
System.out.println("Child Child()");
}
public Child(int num) {
super(num);//부모클래스 Parent int number에 대입
}
//상속은 단 방향(위에서 아래로- 조상에서 아래로) 따라서func()는 Child고유 메소드
public void func() {
//number = 1;
//The field Parent.number is not visible -> private 변수
name = "홍길동";
}
}
'JAVA > 객체 코드' 카테고리의 다른 글
상속(3) 형변환, 배열// (다형성) (0) | 2020.06.03 |
---|---|
상속(2) (0) | 2020.06.03 |
객체 3대 특징 (0) | 2020.06.03 |
constructor 생성자 (0) | 2020.06.02 |
객체 3대 특징 - 은닉성( 캡슐화 ) (0) | 2020.06.02 |