(JAVA) 상속, 인터페이스

코딩을 합시다·2022년 12월 25일
0

상속(inheritance)이란?

  • 상속(inheritance)이란 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미합니다.
  • 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나.
  • 기존에 정의되어 있는 클래스의 모든 필드와 메소드를 물려받아, 새로운 클래스에서 사용 가능.
  • 기존에 정의되어 있던 클래스는 부모 클래스(parent class) 또는 상위 클래스(super class), 기초 클래스(base class)라고 부름.
  • 상속을 통해 새롭게 작성되는 클래스를 자식 클래스(child class) 또는 하위 클래스(sub class), 파생 클래스(derived class)라고 부름.
// 상속의 예시
class A extends B {
	// A는 자식클래스
    // B는 부모클래스
}

상속의 장점

  1. 기존에 작성된 클래스를 재활용.
  2. 자식 클래스 설계 시 중복되는 멤버를 미리 부모 클래스에 작성해 놓으면, 자식 클래스에서는 해당 멤버를 작성하지 않아도 됨.
  3. 다형성 구현(하나의 객체가 여러 가지 타입을 가질 수 있는 것)

상속의 특징

  • 자식 클래스는 부모 클래스의 메소드와 필드를 사용할 수 있다.
  • 부모 클래스를 호출하고 싶을때는 super()를 쓴다
  • 상속받은 메소드를 오버라이딩(재정의)해서 사용할 수 있다
  • final 클래스는 상속 할 수 없다.

오버라이딩

  1. 오버라이딩이란 상속받은 메소드를 자식 클래스에서 재정의하는 것을 말한다.
  2. 일반 클래스의 상속 관계보단 추상 클래스나 인터페이스에서 주로 사용되는 개념이다.
  3. 오버라이딩이란 메소드의 동작만을 재정의하는 것이므로, 메소드의 선언부는 기존 메소드와 완전히 같아야 함
    하지만 메소드의 반환 타입은 부모 클래스의 반환 타입으로 타입 변환할 수 있는 타입이라면 변경할 수 있음
  4. 부모 클래스의 메소드보다 접근 제어자를 더 좁은 범위로 변경할 수 없음
  5. 부모 클래스의 메소드보다 더 큰 범위의 예외를 선언할 수 없음

인터페이스(interface)란?

  • 자식 클래스가 여러 부모 클래스를 상속받을 수 없기에 인터페이스를 통해 다중 상속을 지원함.
  • 기본이 되는 틀을 제공, 추상 클래스를 의미
// 인터페이스 예시
class A implements B {
	// A는 자식클래스
    // B는 인터페이스
}

인터페이스의 장점

  1. 대규모 프로젝트 개발 시 일관되고 정형화된 개발을 위한 표준화가 가능합니다.
  2. 클래스의 작성과 인터페이스의 구현을 동시에 진행할 수 있으므로, 개발 시간을 단축할 수 있습니다.
  3. 클래스와 클래스 간의 관계를 인터페이스로 연결하면, 클래스마다 독립적인 프로그래밍이 가능합니다.

출처:
http://www.tcpschool.com/java/java_inheritance_concept
http://www.tcpschool.com/java/java_polymorphism_interface

0개의 댓글