공부하는 다락방

열혈강의 Java프로그래밍 Round 13 본문

Java

열혈강의 Java프로그래밍 Round 13

권파인 2014. 12. 23. 16:37

# 포함 Object의 단점 : 객체명의 접근
    ex) CC cc = new CC(); //객체를 생성한 다음 객체명으로 단계 접근을 해야함.
          System.out.println("cc,z = " + cc.z);
          System.out.println("cc,y = " + cc.bb.y);
          System.out.println("cc,x = " + cc.bb.ap.x);

# 최상위 클래스 : java.lang.Object
    * Object는 시조격 인터페이스를 제외하고 모든 것들이 다 Object를 상속받음. (클래스 계열)

# 자바에서 생략된 형태들
- import, default 생성자, this, 0번째매개변수, toString(), Object, super()

# this()와 super()
- this() : 자신 클래스의 또 다른 생성자 호출
- super() : 상위 클래스의 생성자 호출

# 필드의 상속과 접근자 : protected

# super와 this 예약어를 통한 접근
- 생략 시 자동 this 인식
    * 부모클래스와 자식클래스의 똑같은 이름의 멤버필드가 있을 경우 반드시 구분을 해줘야함. (부모의 x를 사용할지 자식의 x를 사용할지 모르기 때문에 생략시 자동으로 this를 인식해서 자식의x를 가져옴.)
    * 자식클래스의 부모클래스가 갖고있는 멤버필드가 없는경우 this나 super나 아무거나 사용해도 무방함. (어차피 하나밖에없으니까 굳이 구분을 안해도 됨.)

# 메서드의 상속과 메서드 재정의
- 메서드 오버라이딩 : 접근자와 예외전가 (상속했을 경우에만 똑같은 메서드 사용 가능, 익명Inner클래스와 같음, 다른 것은 super을 사용할 수 있음.)
- 메서드 오버로딩 : 매개변수 개수와 자료형 다를 경우 가능
- final 메서드의 제약 (final을 사용하게 되면 상속이 안 되거나 메서드 오버라이딩이 안 됨.)
    * 부모클래스보다 자식클래스의 접근자가 크거나 같아야 함. 이게 규칙!!
    * private < package < protected < public

# 다형성이란?
- 부모 객체를 통해 자식 객체를 표현하는 방법
    * 부모이름으로 묶어서 자식들을 관리할 수 있음.
 
# 멤버 필드의 다형성 표현
 - 부모 객체의 필드만 사용 가능
    * 멤버필드는 부모의 객체로 이름을 묶었을 때 부모의 멤버필드를 먼저 실행.

 # 멤버 메서드의 다형성 표현
 - 자식 객체의 메서드를 먼저 수행
 - 자식 객체에 해당 메서드가 없다면 부모 객체의 메서드 실행
     * 부모가 가진 메서드에 관해서만 일반 상속성과 같음.
    * 메서드는 부모의 객체로 이름을 묶었을 때 자식메서드를 먼저 실행.

 

Comments