자바 상속(java inheritance)
상속은 IS-A 관계(하위클래스는 완벽한 상위클래스)
상위 클래스의 모든 내용을 하위 클래스가 계승한다.
하위 클래스는 상속된 필드와 메소드 중에 private으로 선언된 것이 아닌 것에만 접근할 수 있다.
(private으로 선언된것도 상속되지만 단지 접근 못할 뿐)
원시 코드 및 외부 인터페이스 재사용
하위 클래스는 상위클래스를 처다볼 수 잇지만 상위클래스는 하위클래스가 여러 개가 될 수 있으므로 정할 수 없다.
상위 클래스는 오직 한 개만 존재(자바는 단일 상속, C++의 경우 여러 개의 상위 클래스가 존재할 수 있다)
상위클래스 자체 및 변수, 메쏘드의 재사용
상위 클래스의 모든 내용을 하위 클래스가 계승한다.
하위 클래스는 상속된 필드와 메소드 중에 private으로 선언된 것이 아닌 것에만 접근할 수 있다.
(private으로 선언된것도 상속되지만 단지 접근 못할 뿐)
원시 코드 및 외부 인터페이스 재사용
하위 클래스는 상위클래스를 처다볼 수 잇지만 상위클래스는 하위클래스가 여러 개가 될 수 있으므로 정할 수 없다.
상위 클래스는 오직 한 개만 존재(자바는 단일 상속, C++의 경우 여러 개의 상위 클래스가 존재할 수 있다)
상위클래스 자체 및 변수, 메쏘드의 재사용
[예제]
package onj;
class A
{
int f; // 인스턴스 변수
void m() { System.out.println("m()"); } // 인스턴스 메쏘드
static int sf; // 클래스 변수
static void sm() {
System.out.println("A sm()");
} // 클래스 메쏘드
}
{
int f; // 인스턴스 변수
void m() { System.out.println("m()"); } // 인스턴스 메쏘드
static int sf; // 클래스 변수
static void sm() {
System.out.println("A sm()");
} // 클래스 메쏘드
}
class InheritanceTest extends A
{
int f2;
void m2() {
System.out.println("B sm()");
}
public static void main(String[] args)
{
InheritanceTest b = new InheritanceTest();
b.f2++; // InheritanceTest의 필드
b.m2(); // InheritanceTest의 메쏘드
b.f++; // A로부터 상속된InheritanceTest의 필드
b.m(); // A로부터 상속된 InheritanceTest의 인스턴스 메쏘드
InheritanceTest.sf++; // A로부터 상속된 클래스 필드
InheritanceTest.sm(); // A로부터 상속된 클래스 메쏘드
}
}
{
int f2;
void m2() {
System.out.println("B sm()");
}
public static void main(String[] args)
{
InheritanceTest b = new InheritanceTest();
b.f2++; // InheritanceTest의 필드
b.m2(); // InheritanceTest의 메쏘드
b.f++; // A로부터 상속된InheritanceTest의 필드
b.m(); // A로부터 상속된 InheritanceTest의 인스턴스 메쏘드
InheritanceTest.sf++; // A로부터 상속된 클래스 필드
InheritanceTest.sm(); // A로부터 상속된 클래스 메쏘드
}
}
[결과]
B sm()
m()
A sm()
m()
A sm()
오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)
[개강확정강좌]오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)
[주말]
[10/26]C#,ASP.NET마스터
[10/27]JAVA&WEB프레임워크실무과정
[평일야간]
[10/17]SQL초보에서실전전문가까지
[10/22]자바초보에서안드로이드까지
[10/25]C#,ASP.NET마스터
[10/25]Spring3.X, MyBatis, Hibernate실무과정
[주간]
[10/21]Spring3.X, MyBatis, Hibernate실무과정
[주말]
[10/26]C#,ASP.NET마스터
[10/27]JAVA&WEB프레임워크실무과정
[평일야간]
[10/17]SQL초보에서실전전문가까지
[10/22]자바초보에서안드로이드까지
[10/25]C#,ASP.NET마스터
[10/25]Spring3.X, MyBatis, Hibernate실무과정
[주간]
[10/21]Spring3.X, MyBatis, Hibernate실무과정
댓글 없음:
댓글 쓰기