ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 암시적, 명시적 관계
    이론 2015. 9. 18. 17:38
    반응형


    public class ParentC {


    public String nation;

    public int studentNo;


    public ParentC(String nation) {

    this.nation = nation;

    System.out.println("ParentC(String nation) call");

    }


    }




    public class ChildT extends ParentC {

    private int studentNo;


    public ChildT(String name, int studentNo) {
    this.nation = name;
    // super(name);
    this.studentNo = studentNo;
    }

    }




    이렇게 돌리면 this.nation = name 이라는 값이 명시적으로 선언되지 않아서


    암시적으로는 ParentC를 상속받았기 때문에 우리는 String nation이라는 값을 상속받았다는 것을 알고 있지만


    JAVA에서는 명시적으로 확실히 선언하지 않으면 에러가 발생한다.






    public class ParentC {


    public String nation;

    public int studentNo;


    public ParentC(String nation) {

    this.nation = nation;

    System.out.println("ParentC(String nation) call");

    }


    }




    public class ChildT extends ParentC {

    private int studentNo;


    public ChildT(String name, int studentNo) {
    // this.nation = name;
    super(name);
    this.studentNo = studentNo;
    }

    }


    그래서 이렇게 명시적으로 super(name)이라고 언급을 해야 오류없이 제대로 작동한다.


    이렇게 안하고 ParentC 클래스에 기본 생성자인


    public ParentC() { }

    를 생성해도 괜찮다.


    이 방법 또한 명시적으로 기본생성자를 생성한 것이기 때문에


    전에 올린 글에서 가급적이면 모든 경우의 상황을 대비하여 


    기본생성자를 오버로딩(중복 메소드) 하라고 했던 것이다.






    반응형

    '이론' 카테고리의 다른 글

    동적바인딩 - 타입캐스팅  (0) 2015.09.21
    동적바인딩  (0) 2015.09.21
    Singleton패턴  (0) 2015.09.18
    종단클래스/메소드  (0) 2015.09.18
    상속의 관계  (0) 2015.09.18
Designed by Tistory.