Reference Type Casting

reference type

타입은 부모 클래스가 더 크다.
Parent x = new Child(); //자식을 만들어서 부모 타입으로 저장 "정답"
작은 값을 큰 타입에 저장하는건 형변환이 필요가 없다.

new Child(); 만든건 2층 짜리 구조이다
Parent x 1층짜리만 이용할게~
자리가 있을때 안쓰는경우

Child x = new Parent(); //부모를 만들어서 자식 타입으로 저장 error
new Parent(); 1층 짜리 구조를 만들고
Child x 난 1,2층 다 이용하고싶은데
자리가 없어서 error

class Parent{
protected void printName() {
        System.out.println("name:" + name);
    }
}

class Child extends Parent{
public void callSuper() {
     super.printName();
}
@Override
protected void printName() {
        //super.printName();
     System.out.println("name: Tomson");
}

}

//Child c = new Child();
Parent c = new Child(); //다형성 (생성된 객체를 가리키는 변수) 상속 관계가 있을때만 가능하다.
c.callSuper(); // 자식 클래스라서 접근을 못한다. Parent 타입이라서 자식 클래스에는 접근이 불가능하다
하지만 재정의된 메소드면 접근이 가능하다. 무조건 재정의된 메소드가 출력된다
c.printAddress();
c.printName() // @Override 때문에 자식 클래스 값이 출력이 되고
만약에 부모 클래스의 printName()를 출력하고 싶으면
자식 클래스 printName()에서 한번더 super.printName(); 를 이용해서 호출 할 수있도록 한다.

@Override
재정의 해뒀으면 자식 클래스에 접근이 가능하고 무조건 재정의된 메소드가 호출이 된다.


'JAVA > JAVA 기본 문법' 카테고리의 다른 글

[JAVA]- static  (0) 2019.01.19
[JAVA]- final  (0) 2019.01.19
[JAVA]-Java 상속  (0) 2019.01.19
[JAVA]-Java Encapsulation  (0) 2019.01.19
[JAVA]-Java #접근수식어 (접근지정자, 접근 제한자)  (0) 2019.01.19

+ Recent posts