[JAVA] 상속

hi·2022년 1월 9일
0
상위(부모)클래스 A class         
             ↑		     
하위(자식)클래스 B class 	     

// A가 B에게 상속한다 = B가 A를 상속받는다
// 화살표 방향에 주의
  • class B extends A {}

    extends는 확대, 확장한다는 뜻으로 자식 B 클래스가 A 클래스를 확장시킨다 생각하면 됨

  • 상위클래스 : 일반적인 개념
    하위클래스 : 구체적인 개념

super

: 하위클래스에서 상위클래스로 접근할 때 사용

  • 상위클래스의 주소(=참조값)을 갖고 있음
  • 상위클래스의 생성자를 호출하는데도 사용

메서드에서

  • 상위클래스 멤버를 하위클래스 메서드에서 참조할 경우, super. 를 사용 ( this. 처럼 )
    단, static 메서드에서는 사용 불가
  • 부모 메서드를 오버라이딩한 경우,
    super.메서드 로 부모의 메서드 호출 가능

super( )

: 부모 클래스의 생성자를 호출

  • 반드시 첫 줄
  • 매개변수가 있는 부모 생성자 호출시 괄호 속에 부모클래스의 매개변수를 넣어야 함
ex)

public A class {     			// 부모클래스 A
	int a;
   	int b;
    
	public A () {			// 매개변수가 없는 생성자
    	super();
    }
        
    public A (int a, int b) {	// 매개변수가 있는 생성자
    	super();
            
        this a = a;
        this b = b;
    }
}


public B class extends A {		// 자식클래스 B
	String c;
    	
        // 매개변수가 있는 부모 생성자 호출  
    	public B (int a, int b, string c) {	
    		super(int a, int b);
            
            this.c = c;
        }

}

메서드 재정의 (오버라이딩)

  • 반환형, 메서드 이름, 매개변수 개수, 매개변수 자료형이
    반드시 같아야 함
    => 그렇지 않으면 다른 메서드로 인식

형변환

  • 자식은 부모로 자동 형 변환 가능
    부모는 자식으로 자동 x
  • 부모가 자식으로 강제형변환 가능하나 예외객체 발생 👉 프로그램 종료

다운캐스팅 , instanceof

다운캐스팅
: 상위 클래스로 형 변환 되었던 하위 클래스를 다시 원래 자료형으로 형변환

instanceof
: 모든 인간은 동물이지만 모든 동물이 인간은 아니다.
따라서 다운 캐스팅 전, 상위 클래스로 형변환된 인스턴스의 원래 자료형을 확인해야 하는데 이를 확인하는 예약어

if(A instanceof B) {		// A 인스턴스 자료형이 B형이라면 
	B b = (B)A;		// 인스턴스 A를 B로 다운캐스팅
}

0개의 댓글