코린이 객체지향 4일차

조태연·2022년 2월 28일
0
post-thumbnail

Chapter 4. 상속

2022년 2월 28일 월요일
오후 8:03

Inheritance

Parent라는 class에 method1이라는 멤버가 있다고 하자
근데 이 class를 수정 불가 or 하기 싫은데 Method2를 추가하고 싶다면?

Class Parent {
public void method1() {
//..
}
}

▼ copy 1
//쉽긴한데 Parent에서 생긴 버그를 수정하려면 ClonedChild도 하나하나 다 수정해야함

Class ClonedChild {
public void method1() {
//..
}
public void method2() {
//..
}
}

▼ copy 2

Class child extends Parent{
public void method2() {
//..
}
}

이 class는 Parent를 extends한다는건 Parent의 class를 상속받는다는 건데,
이 Child에는 method1이 구현되어 있지 않지만 상속받았기에 Parent의 method1을 사용할 수 있게됨. 그리고 Parent의 method를 수정하면 얘를 상속받는 자식들의 모든 method들이 수정되는 효과적인 작업이 가능.

Interface

Interface Contract {
public String method1(String param);
public int method2(int param);
}
...
Class concreate1 implements Contract{
}

//concreate1이라는 class는 contract라는 interface에 적혀있는 method들의 형식을 구현했다 or 구현해야 한다.

이상태로 compile을 하게 되면 compile조차 되지 않음.
→Why? Contract에 적혀있는 method들을 정의해야한다는 규칙을 어겼기 때문에

Class concreate1 implements Contract{
public String method1(String param) {
return "foo";
}
public int mehod2(int param) {
return 1;
}
}

Contract에 적혀있는 형태의 method를 구체적으로 구현해야하는 책임을 concreate1이 가지게 됨
Contract에 적혀있는 것들을 구현한다는 일종의 계약인 셈

Interface
서로 같은 이름의 class가 존재하려면 그것을 서로 다른 package에 담아야 한다!

profile
성장하는 코린이

0개의 댓글

관련 채용 정보