ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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 사용

     

     

Designed by Tistory.