객체 지향 프로그래밍(Object Oriented Programming)3 - 상속(Inheritance)

2021. 10. 30. 15:37Java

상속

부모 클래스의 멤버를 자식이 물려받아 정의하여 코드의 재사용이 가능한 것

 

상속하는 클래스  - 부모 클래스, 수퍼 클래스, 상위 클래스

상속 받는 클래스 - 자식 클래스, 서브 클래스, 하위 클래스


특징

  • 코드의 절감 - 기존 코드의 멤버를 물려받음
  • 유지 보수성 향상 - 부모의 코드를 변경하면 자식에게 모두 적용 
  • 단일 상속 - 자식은 단 하나의 부모에게만 상속을 받을 수 있음
  •  extends키워드를 통해 상속 받음
  • 상속의 관계는 is a 라고 한다 - Tiger is a Animal
  • super카워드를 통해 조상 클래스 멘버에 접근
//부모 클래스 
public class Animal{
	void eat(){}
    void poo(){}
    void cry(){}
}

//extemds키워드로 상속 받음
//부모의 모든 속성을 가지고 있음
public class Tiger extends Animal{
	void zigzag(){}
}

매서드 오버라이딩(Overriding)

조상 클래스에 정의된 매서드를 자식 클래스에 적합하게 수정하는 것

overwrite라고 생각하자! - 덮어 쓴다고 생각! 

조건

  • 매서드 이름이 같아야 함
  • 리턴 타입이 같아야 함
  • 매개 변수 개수, 타입, 순서 같아야 함
  • 접근 제한자의 범위: 자식 >= 부모
  • 자식은 부모보다 더 큰 예외 못함
//부모 클래스 
public class Animal{
	void eat(){}
    void poo(){}
    void cry(){
    	System.out.println("엉엉엉어어엉");
    }
}



//자식 클래스
//부모 클래스의 cry매서드를 오버라이딩 하고 있다
public class Tiger extends Animal{
	void cry(){
    	System.out.println("어흥~ 어흥~");
    }
	void zigzag(){}
}