다음 요구사항에 맞게 클래스 구조를 설계하고 객체 생성 후 가진 모든 기능을 실행하는 코드를 작성
요구사항
- 브라우저들을 클래스로 구현(크롬, 엣지, 웨일)
- 각각의 브라우저들은 다음 데이터와 기능이 존재
- 크롬(Chrome) 브라우저
- 주소를 저장할 수 있어야 한다(url)
- 새로고침 기능이 존재해야 한다(refresh)
- 페이지 이동 기능이 존재해야 한다(move)
- 개발자 도구 기능이 존재해야 한다(develop)
- 크롬스토어 기능이 존재해야 한다(chromeStore)
- 엣지(Edge) 브라우저
- 주소를 저장할 수 있어야 한다(url)
- 새로고침 기능이 존재해야 한다(refresh)
- 페이지 이동 기능이 존재해야 한다(move)
- 전체화면 기능이 존재해야 한다(fullScreen)
- 웨일(Whale) 브라우저
- 주소를 저장할 수 있어야 한다(url)
- 새로고침 기능이 존재해야 한다(refresh)
- 페이지 이동 기능이 존재해야 한다(move)
- 파파고 번역 기능이 존재해야 한다(papago)
- 네이버 검색 기능이 존재해야 한다(naverSearch)
- 크롬(Chrome) 브라우저
- 모든 기능들은 실행 시 간단한 텍스트 메세지가 출력되어야 한다
- 예를 들어 페이지 이동 기능을 실행하면 "페이지 이동 기능 실행"이라고 화면에 표시되면 된다
** 분석
1) url은 멤버 필드(속성)이며 나머지는 메소드(기능)이다
2) 브라우저들은 공통적으로 refresh(), move() 메소드를 가진다
3) 크롬만의 고유한 메소드는 develop()과 chromeStore() 이다
엣지만의 고유한 메소드는 fullScreen()이다
웨일만의 고유한 메소드는 papago()와 naverSearch()이다

4) 멤버필드인 url과 메소드인 refresh(), move()는 슈퍼 클래스에 생성한다
5) Chrome, Edge, Whale 클래스는 슈퍼 클래스로부터 공통적인 특징을 상속받으며 고유 메소드는 따로 작성한다
Browser 클래스 (슈퍼 클래스)
package day12_oop.inherit3;
// 슈퍼 클래스
public class Browser {
// 멤버 필드
private String url;
// getter & setter
public String getUrl() {
return this.url;
}
public void setUrl(String url) {
this.url = url;
}
// 메소드
public void refresh() {
System.out.println("새로고침 실행");
}
public void move() {
System.out.println("페이지 이동 실행");
}
}
** 슈퍼 클래스에 생성자를 쓰는 경우?
- 서브(자손) 클래스는 슈퍼(부모) 클래스의 반드시 입력해야 할 멤버필드를 지정해야할 경우 생성자를 사용
Chrome 클래스
package day12_oop.inherit3;
public class Chrome extends Browser { // Browser 클래스의 상속을 받음
// Chrome의 메소드
public void develop() {
System.out.println("개발자 도구 실행");
}
public void chromeStore() {
System.out.println("크롬 스토어 실행");
}
}
Edge 클래스
package day12_oop.inherit3;
public class Edge extends Browser { // Browser 클래스의 상속을 받음
// Edge의 메소드
public void fullScreen() {
System.out.println("전체화면 실행");
}
}
Whale 클래스
package day12_oop.inherit3;
public class Whale extends Browser { // Browser 클래스의 상속을 받음
// Whale의 메소드
public void papago() {
System.out.println("파파고 실행");
}
public void naverSearch() {
System.out.println("네이버 검색 실행");
}
}
메인 메소드
package day12_oop.inherit3;
public class Test01 {
public static void main(String[] args) {
// 객체 생성
Chrome a = new Chrome();
Edge b = new Edge();
Whale c = new Whale();
// 상속받은 메소드 출력
// url에 대한 setter 메소드 (슈퍼 클래스로부터 상속받은)
a.setUrl("https://www.google.com");
b.setUrl("https://www.microsoft.com");
c.setUrl("https://www.naver.com");
// refresh(), move() (슈퍼 클래스로부터 상속받은)
a.refresh();
a.move();
a.refresh();
a.move();
a.refresh();
a.move();
// 고유 메소드
a.develop(); // Chrome의 개발자 도구
a.chromeStore(); // Chrome의 크롬 스토어
b.fullScreen(); // Edge의 전체화면
c.papago(); // Whale의 파파고
c.naverSearch(); // Whale의 네이버 검색
}
}
'국비교육 > 국비교육 복습' 카테고리의 다른 글
day12_oop.inherit6 : 추상 클래스(abstract class)와 추상 메소드(abstract method) (★) (0) | 2022.08.14 |
---|---|
day12_oop.inherit5 : 상속받은 클래스로부터 다시 상속을 받는 경우 + 접근제한 protected (★) (0) | 2022.08.14 |
day11_oop.keyword10 : final 키워드 - 오직 1번만 변수의 초기화를 허용 (0) | 2022.08.13 |
day11_oop.keyword7 : static 변수 (클래스 변수) (0) | 2022.08.13 |
day11_oop.keyword4 : static 메소드 - 클래스를 인스턴스 생성하지 않고도 메소드 호출 가능 (★) (0) | 2022.08.13 |