티스토리 뷰

 

 

상속클래스는 다음과 같이 상속받은 자식을 또  상속할 수 있다. 

상속관계가 내려오면서 조금더 세분화 된다고 생각하면 될것같다.

(동물)>(개)>(내가 키우는 개) 이런식으로 세분화 시켜서 조금더 구체적인 기능을 넣을 수 있다. 

 

 

또 다른 특징으로는 자식객체는 두개의 부모를 가질 수 없다. 

이는 개념적으로도 부모가 둘 일수는 없기 때문에 이런 관계는 성립되지 않는다

즉. 자식클래스는 복수의 부모클래스를 가질 수 없다. 라고 이해하면된다.

 

 

*클래스 내부는 볼 필요 없습니다(복붙해서)

하지만 다음과 같이 한 부모는 여러개의 자식 클래스를 가질 수 있다. 

이 또한 개념적으로 한 부모가 여러 자식들을 가질 수 있기때문이라고 이해하면 될것같다. 

 

즉 상속의 특징을 간단하게 요약하면 

1.자식클래스는 여러개의 부모클래스를 상속받을 수 없다. 단 한개만 가능

2.역으로 부모클래스는 여러개의 자식클래스에 상속해줄 수 있다. 

3.또한 자식클래스또한 또 다른 자식클래스에 상속을 할 수 있다. ( 할머니 할아버지,어머니 아버지,자식들) 이런식으로 이해하면 될것같다 .

+상속을 받을 때마다 더 많은 기능을 집어넣고 부모클래스보다 보다 구체적인 내용을 담고 있길바란다.

그러면 이렇게 상속의 특징들을 전부 살펴봤으니 이제 오버라이딩을 배워보도록 하자. 

 

 오버라이딩 같은 경우는, 부모의 메소드를 자식이 재정의하는 것 이라고 짧게 설명할 수 있다. 

더 자세히 말하자면 상위 클래스가 가지고 있는 특성을 하위클래스가 재정의한다고 생각하면 될 것 같다. 

실제로 어떤식으로 되는것인지 코드를 살펴보자.

 

 

일단 Animal class는 아무것도 상속받고 있지 않다..(*실제로는 object를 상속받고 있지만 이는 자동적인것이므로 개념만 알고있자)Animal 클래스가 가지고 있는 객체변수와 메소드는 name 과 setName이다 setName은 입력값이 현재 없는상태이다. 

 

 

그리고 Animal class를 상속받는 Dog이라는 클래스를 만들었다. 

여기서 Animal 클래스에 있는 setName이라는 메소드를 오버라이드해 재정의를 했다. 

위의 setName에서 name값을 임의로 집어넣어서 Dog이 가지고 있는 setName의 기능은 name안에 멍멍을 집어넣어준다. 

Animal클래스에서는 아무것도 집어넣지 않았는데 이렇게 재정의를 통해서 이제 name안에는 멍멍이 들어가게 된다. 

 

이클립스에서는 오버라이딩이 됐다면 저렇게 세모모양이 뜬다. 

 

이렇듯 메소드를 재정의하고 조금더 구체적인 기능 혹은 같은 맥락이지만 (ex 개는 멍멍하고 울지만 고양이는 냐옹하고 운다) 서로 다른 값을 가지고 있을때 주로 사용한다. 

*중요한점: 오버라이딩을 사용하면 마지막으로 재정의된 그러니까 몇개의 클래스를 상속받든 마지막으로 재정의한 부분의 값이 출력된다..(상위클래스에서 실행시키는게 아닌경우) 

*부모자식관계에서 오버라이딩은 강제적이지 않다. 사용자가 임의로 만들 수 있는 부분. 하지만 인터페이스 등 에서는 

강제적으로 오버라이딩을 해야한다. 이는 나중에 정리

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함