<오전>
09_ 상속
<오후>
평가
<보충>
객체 배열
클래스를 이 관계로 만들기


-> 반환타입 없음, 파라미터 없음
클래스와 클래스의 관계를 보는 문제

-> 학생도 사람이니까 eat, sleep 할 수있게 만들기



-> 슈퍼클래스(위)
-> 서브클래스(아래)

-> sup(위) sub(아래)

-> person 하위클래스
-> extends : 확장했다. 기능을 넓혔다
(person의 기능을 확장한 student , person 의 기능을 가지고 있는 student)
person의 기능 2개, studnet의 기능 1개

-> 현재 생성자 만든적이 없으니 : 디폴트 생성자 사용해서 만들기

-> person것을 부를 수 있게 되어있음

-> eat, sleep은 상속받아서 사용할 수 있는 메소드, study는 내것


하이브리드 : 기름, 전기모터로도 움직일 수 있는 자동차

-> 4번(부모가 둘이어야 함):문법상 지원 안됨

-> Ev로 두든 EngineCar을 두든 상관없음
(3. 기름넣기를 기본, 충전은 본인이 하면됨)

-> '다이아몬드 상속'으로 문제 생김

-> C++ 언어는 다중상속지원함(문법의 어려움 있음)



99에서 channel 올리면 0으로 됨

-> channel : cycle 관계


외부로부터 파라미터를 받아와서 해당 vol에 전달해줌


-> tv가 자식임

-> tv는 텅 비었지만 리모콘을 상속받았기 때문에

-> tv가 remocon가질 수 있음

GUN 부모 Soldier 자식

-> has a 관계는 상속으로 잘 안하고 필드로 넣어버리는 경우가 많음

person과 student에 살 붙이기


-> person과 student에 각각 2개씩 생성자 줌
student 부모꺼 사용가능 -> getName사용가능

학생이름을 준 적이 없으니 getName 은 다 "null"임


-> Person()은 자바가 부름
-> 왜 person이 호출되었는가?


person부모 student 자식

-> 자식(student)가 태어나려면
먼저

부모(person)이 태어나야한다.
-> 자식이 생성될 때, 반드시 부모가 먼저 생성되어야 한다.
-> 코드 유무와 상관없이(부모를 생성하겠다하는 코드를 넣은 적 없어도)
-> 자바에 의해서 부모(person)이 먼저 만들어지고 자식(studnet)가 만들어진다.

-> 순서지키기 !

서브클래스가 만들어진다 => 서브 클래스의 생성자가 만들어진다는 뜻


-> 생성자의 파라미터가 없는 것 (디폴트 생성자)

person이라고 부르지 않고 생성자끼리는 super라고 부름
student는 person이다.
이름의 전달이 아직없음
-> 이름을 가진 학생을 만들기

-> super 클래스 생성자 호출을 함

-> person의 string name의 생성자를 부른다 -> person을 부른다.

-> 호출되겠군 알수있음


notebooks is a computer : notebook은 자식

-> 배터리 용량이 얼마짜리 computer

-> 동작가능하도록 computer와 notebook내용채우기

컴퓨터가 처리해주는 것, model은 내가 처리 할 수 없고 배터리는 내가 처리함

-> battery의 getter,setter 필요함

-> 필드에 전달해서 처리하자

-> super의 호출은 "먼저" 있어야 함
model 전달해주면 컴퓨터 생성자 먼저 채워지고 돌아와서 배터리 채워짐
5, 6교시 평가


cafelatte가 espresso 가지고 있는것
가지고 있는 건 -> 상속 가능

-> 에스프레소(부모) 가 가지고 있는 메소드 모두 호출가능능

-> 라떼 메소드 taste있음(부모것)
-> 카페라떼 맛은 다르면 다시 만들기


-> 부모의 메소드를 자식은 가져다 쓸 수 있지만 여기서는 부모것을 사용하기 부적절해서 taste다시 만듦



-> 위치 : public 윗줄


-> 반환타입, (파라미터) 하나라도 다르게 만들면 안됨!

-> 똑같지 않으면 오류남
직접 전부 만드는 것 : 하드코딩하고 있음
-> 다 적지 않고 일부 코드는 eclipse에 맡기기(실무에서도 같음)