http://programmersnight.com |
- 상속 ( Inheritance ) 의 개념
- 상속의 특징
ex) class Person extends Animal{ }
is a relationship : 사람은 동물이다 (is a 관계가 성립되었다)
부모 차원에서 Encapsulation 적용된 멤버(변수,메서드)는
상속받더라도 접근할 수 없다 (Private 명시했을 때)
( 접근이 필요하다면 setter/getter 를 활용해야 한다 )
http://jitendrazaa.com |
- 접근제어자 (access modifier)
public : 어디서나 접근 가능
protected : 같은 패키지내에서 접근 가능
(단 상속관계시에는 다른 팩키지에서도 접근 가능)
default : 같은 패키지내에서 접근 가능
private : 자신의 클래스 내에서만 접근 가능
- 상속의 원리 : super keyword
부모 객체부터 생성되어 마지막에 자식 객체가 생성된다 ( heap memory 영역 )
이런 것이 가능한 이유는 생성자에는 별도 명시하지 않을 경우
컴파일시에 생성자 실행 첫라인에 super() 코드가 자동 삽입되기 때문이다.
super() 는 부모 생성자를 호출하여 객체 생성되도록 한다
ex)
1
2
3
4
5
6
7
8
9
|
class GrandParent{}
class Parent extends GrandParent{}
class Child extends Parent{}
new Child() 가 실행될 경우 객체 생성순서는?
GrandParent -> Parent -> Child 순서로 생성된다
자동삽입될 생성자의 형태는
Child(){super();}
| cs |
- 오버로딩
여러번 정의하는 기법 ( 다양한 매개변수로 정의 )
-> 사용자 편의성 증대
- 오버라이딩(메서드)
자신에 맞게 재정의(수정)하는 기법
-> 부모 메서드와 오버라이딩하는 자식 메서드 명이
동일해야 하고 리턴타입 , 매개변수 또한 동일해야 한다
접근제어자는 더 좁아지면 안된다
http://javarevisited.blogspot.kr |