<오전>
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에 맡기기(실무에서도 같음)