2013년 11월 12일 화요일

[JAVA/자바/객체지향]자바 상속(java inheritance) 상속은 IS-A 관계(하위클래스는 완벽한 상위클래스) 상위 클래스의 모든 ...

[JAVA/자바/객체지향]자바 상속(java inheritance)
 
상속은 IS-A 관계(하위클래스는 완벽한 상위클래스)
상위 클래스의 모든 내용을 하위 클래스가 계승한다.
모듈의 재사용(reuse)과 코드의 간결성을 지원함.
클래스를 이용하여 다른 클래스를 생성 또는 정의할 수 있음
하위 클래스는 상속된 필드와 메소드 중에 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로부터 상속된 클래스 메쏘드      
    }
}

 
 
[결과]
 

댓글 없음:

댓글 쓰기