본문 바로가기
JAVA Basic

공부 11일차) 상속

by 넴넴L 2023. 1. 9.
728x90

안녕하세요! 넴넴입니다!

어느덧 공부한지 벌써 이렇게 됐네요

일기처럼 끄적이고 있는데 생각보다 이게 참 어렵네요

공부하고 다시 캡처하고 넣고.. ㅎㅎ

잡담은 그만하고 글이 길어지기 전에 빠르게 들어가봅시다!

 

이번에 들어갈 새로운 파트는 상속입니다. 매우 중요하니 이해를 잘 하셔야 합니다.

상속이란?
1. 자식(하위, 파생) 클래스가 부모(상위) 클래스의 멤버를 물려받는 것
2. 자식이 부모를 선택해 물려받음
3. 상속 대상 : 부모의 필드와 메소드

상속의 효과
1. 부모 클래스 재사용해 자식 클래스 빨리 개발 가능
2. 반복된 코드 중복 줄임
3. 유지 보수 편리성 제공
4. 객체 다형성 구현 가능

상속 대상 제한
1. 부모 클래스의 private 접근 갖는 필드와 메소드 제외
2. 부모 클래스가 다른 패키지에 있을 경우, default 접근 갖는 필드와 메소드도 제외
extends 키워드
- 자식 클래스가 상속할 부모 클래스를 지정하는 키워드
- 자바는 단일 상속이므로 부모 클래스 나열 불가

Java_1216에 클래스 3개 만들어 줍시다!

 

총 3개를 만들어 주시고 출력 시키면?

잘 나옵니다.

이걸 출력해주고 싶은데 값이 없어서 출력을 못합니다.. ㅠㅠ

그래서 가능하게 만들어 주려면 B를 만들어 주신곳으로 가서

빨간줄 처럼 코드를 추가해주시면 실행이 잘 됩니다.

이것이 상속입니다.

 

새 예제를 들어보죠

새로 class를 만들어주고 코드를 추가해주세요.

또 class하나를 만들어 주고 CellPhone을 상속시켜줍시다.

아직 출력할 수 있는 class가 없으니 만들어 줍시다.

좀 많이 길지만 이렇게 하신 후 출력을 해주시면

적은 대로 나옵니다.

우선 new 연산자에 값을 넣어준 이유는 DmbCellPhone에 변수 3개를 받기 때문에 기입을 해줘야 합니다.

그리고 Voice에는 문자열을 적어주지 않으면 null이 기본값이니 무조건 적어주셔야 원하는대로 뜹니다.

 

그리고 CellPhone에만 model, color가 있는데 DmbCellPhone에서 3개 다 사용할 수 있는 이유가

바로 상속으로 extends를 해주고 this.~ 로 선언을 해주었기 때문에 Ex에서 사용할 수 있게 됩니다.

 

 

오랜만에 문제입니다!

문제 1) SmartTv를 만들기 위해 Game 실행 메서드와, InterNet 메서드를 생성하고
TV의 기본 기능을 구현하기 위해서 Tv 클래스를 생성해 전체 기능을 가지고 있는 
SmartTv 클래스를 만들어 출력.

 

조건) Tv클래스 : 필드 - channel, volumn, state, 
                                                                      메서드 - power on/off, Channel up/down volumn up/down
스마트 TV클래스 : 필드 - url, userId, 메서드 - internetOn/Off, urlChange, gameStart/End/Play