상속과 is, has

haribo·2021년 3월 5일
0

Java

목록 보기
17/17

상속을 할때 is와 has가 있다는데 헷갈려서 정리해봤다.

In Java, a Has-A relationship is also known as composition. It is also used for code reusability in Java. In Java, a Has-A relationship simply means that an instance of one class has a reference to an instance of another class or an other instance of the same class. For example, a car has an engine, a dog has a tail and so on. In Java, there is no such keyword that implements a Has-A relationship. But we mostly use new keywords to implement a Has-A relationship in Java.

is

is는 같다고 할 수 있는것,
예를 들자면 Pulsar는 Bike의 한 종류이니 Pulsar = bike가 성립된다.

Parent parent = new Child();

부모클래스의 변수와 메소드만 호출할 수 있고
자식클래스에 부모클래스에게서 Override한 메소드가 있다면 그 메소드는 호출이 가능하다. (객체의 암묵적 형변환)

has

has는 포함하고 있는것,
Pulsar는 엔진을 포함하고 있지만, Pulsar != Engine 이다.

class Pulsar {
	Engine engine = new Engine();
    engine.start();
}

다른 객체를 받아들여서 그 객체의 기능을 사용하는 것
받아들인 객체의 변수와 메서드를 사용할 수 있다. (멤버변수를 객체로 사용하는 것)

장단점

is

  • 코드간 결합이 좋아 다형성을 구현할 수 있다. (군인 클래스를 상속받은 공군, 해군, 육군을 생각해보자)
  • 부모클래스 명세에 변경이 발생하면 코드가 손상될 위험이 있다.

has

  • 클래스와 객체가 느슨하게 결합되므로 명세에 변경이 발생하더라도 구성요소를 쉽게 변경할 수 있다. (유연성)
  • 결합도가 낮은게 유지보수에 꼭 좋은것만은 아니다.

여담

(Pulsar가 뭔가 찾아봤는데 어썸하다)

출처
https://www.c-sharpcorner.com/UploadFile/3614a6/is-a-and-has-a-relationship-in-java/
https://gbs1995.tistory.com/41
https://minusi.tistory.com/entry/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5%EC%A0%81-%EA%B4%80%EC%A0%90%EC%97%90%EC%84%9C%EC%9D%98-has-a%EC%99%80-is-a-%EC%B0%A8%EC%9D%B4%EC%A0%90

profile
그림 그리는 백엔드 개발자

0개의 댓글