2013년 10월 17일 목요일

자바 상속(java inheritance) 상속은 IS-A 관계

자바 상속(java inheritance)
 
상속은 IS-A 관계(하위클래스는 완벽한 상위클래스)
상위 클래스의 모든 내용을 하위 클래스가 계승한다.
하위 클래스는 상속된 필드와 메소드 중에 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()"); 
    } // 클래스 메쏘드
}
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로부터 상속된 클래스 메쏘드       
    }
}

 
 
[결과]
 
B sm()
m()
A sm()

오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)  



댓글 없음:

댓글 쓰기