▼정답
부모 클래스 : 상위 클래스, 기초 클래스
자식 클래스 : 하위 클래스, 유도 클래스
▼정답
this : 현재 클래스 내
객체 자기 자신을 가리키는 용도
자기 변수를 호출하거나 생성자를 호출하는 함수
super : 상속
자식 클래스에서 부모 클래스에 있는 생성자 호출
▼정답
String course[] = {"Java", "C++", "HTML5", "컴퓨터구조", "안드로이드"};
int score[] = {95, 88, 76, 62, 55};
그리고 다음 예시와 같이 과목 이름을 입력받아 점수를 출력하는 프로그램을 작성하라. "그만"을 입력받으면 종료한다. (Java는 인덱스 0에 있으므로 score[0]을 출력)
과목 이름 >> Jaba
없는 과목입니다.
과목 이름 >> Java
Java의 점수는 95
과목 이름 >> 안드로이드
안드로이드의 점수는 55
과목 이름 >> 그만
[Hint] 문자열을 비교하기 위해서는 String 클래스의 equals()메소드를 이용해야 한다.
String name;
if(course[i].equals(name)) {
int n = score[i];
...
}
▼정답
import java.util.Scanner;
public class Test48 {
public static void main(String[] args) {
String course[] = { "Java", "C++", "HTML5", "컴퓨터구조", "안드로이드" };
int score[] = { 95, 88, 76, 62, 55 };
boolean run = true;
>
while (run) {
boolean input = true;
Scanner sc = new Scanner(System.in);
String name;
System.out.print("과목 이름: ");
name = sc.next();
if (name.equals("그만")) {
System.out.println("종료합니다.");
break;
}
for (int i = 0; i < course.length; i++) {
if (course[i].equals(name)) {
int n = score[i];
System.out.println(name + "의 점수는 " + score[i]);
input = false;
}
}
if (input) {
System.out.println("없는 과목입니다.");
}
}
}
}
[결과]
과목 이름: Java
Java의 점수는 95
과목 이름: abcd
없는 과목입니다.
과목 이름: 그만
종료합니다.
▼정답
레퍼런스 변수(객체) instanceof 클래스명
형변환 가능하면 true 아니면 false를 리턴한다.
box의 주소를 찾아가서 PaperBox가 메모리에 올라와 있는지 찾는 것.
public static void main(String[] args) {
Friend[] frns = new Friend[10];
int cnt = 0;
frns[cnt++] = new UnivFriend("LEE", "Computer", "010-333-555");
frns[cnt++] = new UnivFriend("SEO", "Electronics", "010-222-444");
frns[cnt++] = new CompFriend("YOON", "R&D 1", "02-123-999");
frns[cnt++] = new CompFriend("PARK", "R&D 2", "02-321-777");
// 모든 동창 및 동료의 정보 전체 출력
for(int i = 0; i < cnt; i++) {
frns[i].showInfo(); // 오버라이딩 한 메소드가 호출된다.
System.out.println();
}
}
▼정답
class Friend {
protected String name; // protected 패키지와 상관 없이 상속하는 것은 직접 값을 받아올 수 있다.
protected String phone;
public Friend(String name, String phone) {
this.name = name;
this.phone = phone;
}
public void showInfo() {
System.out.println("이름: " + this.name);
System.out.println("전화: " + this.phone);
}
}
class UnivFriend extends Friend { // 대학 동창
private String major; // 전공
public UnivFriend(String name, String major, String phone) {
super(name, phone);
this.major = major;
}
@Override
public void showInfo() {
super.showInfo();
System.out.println("전공: " + this.major);
}
}
class CompFriend extends Friend { // 직장 동료
private String department; // 부서
public CompFriend(String name, String department, String phone) {
super(name, phone);
this.department = department;
}
@Override
public void showInfo() {
super.showInfo();
System.out.println("부서: " + this.department);
}
}
//대학 동창 : 이름, 전공, 전화번호 정보 저장 및 관리
//직장 동료 : 이름, 부서, 전화번호 정보 저장 및 관리
public class OverrideFriend {
public static void main(String[] args) {
Friend[] frns = new Friend[10];
int cnt = 0; // 인덱스
frns[cnt++] = new UnivFriend("LEE", "Computer", "010-333-555");
frns[cnt++] = new UnivFriend("SEO", "Electronics", "010-222-444");
frns[cnt++] = new CompFriend("YOON", "R&D 1", "02-123-999");
frns[cnt++] = new CompFriend("PARK", "R&D 2", "02-321-777");
// 모든 동창 및 동료의 정보 전체 출력
for (int i = 0; i < cnt; i++) {
frns[i].showInfo();// 오버라이딩 한 메소드가 호출된다.
System.out.println();
} // 이러한 클래스 디자인 기반에서 관리 대상이 넷, 다섯으로 늘어난다면?
// 인스턴스 관리와 관련해서 코드가 복잡해지지 않는다.
}
}