반응형
추상클래스를 활용한 예제이며, 클래스가 조금 많으니 감안해서 봐주시면 되시겠습니다.
또 어플 폰 추상 클래스(부모클래스)를 활용한 예제입니다.
package package1;
//상속 관계이다.
public class GameApp extends Application {
public GameApp(String pappName, String pcompany, int psize) {
//부모의 생성자를 가져와서 값을 초기화해주는 것이다.
super(pappName, pcompany, psize);
}
@Override
public void appRun() {
System.out.println(super.getAppName()+" 게임을 실행합니다.");
}
}
package package1;
public class Phone {
private String phoneNumber;
public Phone(String pphoneNumber) {
this.phoneNumber = pphoneNumber;
}
void call() {
System.out.println(this.phoneNumber + "에서 전화를 걸어 통화합니다");
}
}
package package1;
public class Application {
// 애플리케이션 속성 값을 나타내는 변수이다.
private String appName;
private String company;
// 용량
private int size;
String name;
// 애플리케이션의 기본 속성값을 초기화하기 위한 생성자이다.
public Application(String pappName, String pcompany, int psize) {
this.appName = pappName;
this.company = pcompany;
this.size = psize;
}
public String getAppName() {
return this.appName;
}
public String getCompany() {
return this.company;
}
public int getSize() {
return this.size;
}
// 재정의용 메소드이다.
public void appRun() {
}
public void stop() {
System.out.println(this.appName + " 애플리케이션을 종료합니다.");
}
// 애플리케이션의 기본 속성값을 출력하는 메소드이다.
public void displayAppinfo() {
System.out.println("애플리케이션 이름: " + this.appName);
System.out.println("애플리케이션 제작사: " + this.company);
System.out.println("애플리케이션 사이즈: " + this.size);
}
// 재정의한 toString 메소드
@Override
public String toString() {
return "Application [appName=" + this.appName + ", company=" + this.company + ", size=" + this.size + "]";
}
}
package package1;
public class UtilApp extends Application {
public UtilApp(String pappName, String pcompany, int psize) {
super(pappName, pcompany, psize);
}
@Override
public void appRun() {
System.out.println(super.getAppName()+" 유틸리티 프로그램을 실행합니다.");
}
}
package package1;
public class SmartPhone extends Phone {
private String model;
// 어제 프로젝트의 도형 객체처럼 하나의 클래스를 소유하고 있는 형태이다.
// 이 배열 내부에 pmaxAppCount 만큼의 앱을 저장할 수 있는 배열 객체를 만들 것이다.
private Application[] apps;
private int appCount = 0;
// 이 생성자로 기본 속성값과 앱들을 나타내는 배열 객체의 카운트, 다시말해 스마트폰에서 최대한 가질 수 있는 수를 정한다.
public SmartPhone(String pphoneNumber, String pmodel, int pmaxAppCount) {
super(pphoneNumber);
this.model = pmodel;
this.apps = new Application[pmaxAppCount];
}
public String getModel() {
return model;
}
// 객체 통째로 알게 하는 것은 사실상 잘 안하는 행위이다. 왜?? 정보 은닉이기 때문에
public int getAppCount() {
return appCount;
}
// 어떠한 자식객체가 들어올지를 모르니 부모타입의 변수로 받는다.
void installApp(Application papp) {
this.apps[appCount] = papp;
this.appCount++;
System.out.println(papp.getAppName() + " 앱이 설치되었습니다.\n 현재: " + appCount + " 개의 앱이 설치되어 있습니다.");
}
// 앱들을 저장한 배열을 검색해서 안에 들어있는지 확인하는 메소드이다.
boolean isInstalledApp(String pappName) {
// 앱이 설치되면 그만큼의 카운트가 올라갈 rjtdlek.
for (int i = 0; i < this.appCount; i++) {
if (this.apps[i].getAppName().equals(pappName)) {
return true;
}
}
return false;
}
}
반응형
'It Study > 프로그래밍 공부' 카테고리의 다른 글
mySql 기본 연습 select * from,create, insert into, (0) | 2024.09.20 |
---|---|
프로그래머스 lv0 - 두 수의 곱 (0) | 2024.09.16 |
상속과 다형성을 활용한 java 도형 예제 (0) | 2024.09.11 |
java 기본 문법 - 제네릭 메소드. (2) | 2023.10.07 |
java 기본 문법 - 제네릭의 정의 및 제네릭 타입. (0) | 2023.10.04 |