-
[JAVA] 상속 Implements, extends 차이JAVA 2021. 9. 15. 17:02
상속 (Inheritance) 란?
- 자식 클래스에서 부모 클래스를 선택해서 부모의 멤버를 상속 받아 그대로 쓸 수 있음
- 클래스를 재사용하게 하여 효율적으로 만들어줌
- 부모 클래스의 private을 갖는 필드나 변수는 상속 불가
- 객체지향프로그래밍 (Object-Oriented Programming)을 구현하기 위해 상속이 존재
OOP의 특징:
상속과 인터페이스 (계층성), 캡슐화, 정보은익, 자료 추상화 (모델링), 동적 바인딩, 다형성, 사용편의성 (모듈화)
implements
- 다중 상속을 지원해주기 위해 JAVA 8 부터 나옴
- 부모 클래스 (인터페이스) 에는 선언만 해주고 자식 클래스에서 반드시 오버라이딩 (재정의)를 해줘야함
- 재정의가 필요한 상속이기 때문에 의미가 없다고 생각 할 수도 있겠지만 디폴트메소드를 활용하면 유지보수성이 크게 향상됨
public interface Galaxy { public int mass; // *0^12 solar mass public int color; //magnitude public String getShape(); } public class AndromedaGalaxy implements Galaxy { @Override public String getShape{ return "Eliptical" } } public class Universe { public static void main(Stirng[] args) { Galaxy adromedaGalaxy = new AdromedaGalaxy(); } }
extends
- 상속의 대표적인 형태
- 부모의 public 필드 및 메소드 그대로 사용 할 수 있으며 오버라이딩 필요 없이 그대로 사용 가능
- JAVA는 extends로 다중 상속을 지원하지 않음 - 자식 클래스는 한 부모 클래스만 상속 나응
public class Galaxy { public int mass; // *0^12 solar mass public int color; //magnitude public String getShape() { return "Spiral" } } public class AndromedaGalaxy extends Galaxy { @Override public String getShape() { return "Eliptical" } } public class Universe { public static void main(Stirng[] args) { AdromedaGalaxy adromedaGalaxy = new AdromedaGalaxy(); } }
** exntends와 implements가 각각 사용되는 경우
부모 class -> 자식 class : extends 사용
부모 class -> 자식 interface : implements 사용
부모 interface -> 자식 class : implements 사용
부모 interface -> 자식 interface : extends 사용
'JAVA' 카테고리의 다른 글
[JAVA] java.io.File 의 mkdir()과 mkdirs() (0) 2021.11.02 [IntelliJ] Google Style Formatter 적용 방법 (0) 2021.09.29 [JAVA] 구글 자바 네이밍 (naming) 가이드 (0) 2021.09.29 [JAVA] this 키워드 (0) 2021.09.29 [JAVA] 알고리즘 풀이를 위한 자바 입출력 (0) 2021.09.27