31일 차 - instanceof, 상속 (23.02.08)

yvonne·2023년 2월 8일
0

📂Java

목록 보기
31/51
post-thumbnail

1. 부모클래스와 자식클래스의 다른 용어들은?

  • 부모클래스: 상위클래스 또는 수퍼클래스 (Super class)
  • 자식클래스: 하위클래스 또는 서브클래스 (Sub class)



2. super 키워드와 this 키워드의 차이

  • super 키워드는 부모 클래스의 생성자 호출이고, this 클래스는 자신의 생성자 호출이다.




3. 단일 상속과 다중 상속이란?

  • 단일 상속: 한 개의 클래스만 부모클래스로 받을 수 있는 것
  • 다중 상속: 부모클래스로 여러 개의 클래스를 상속받는 것
  • C++에서는 다중 상속을 허용했지만 java에서는 다중 상속은 불가능하다.




4. 다음 코드와 같이 과목과 점수가 짝을 이루도록 2개의 배열을 작성하라.

String course[] = {"Java", "C++", "HTML5", "컴퓨터구조", "안드로이드"};
int score[]  = {95, 88, 76, 62, 55};
그리고 다음 예시와 같이 과목 이름을 입력받아 점수를 출력하는 프로그램을 작성하라. "그만"을 입력받으면 종료한다. (Java는 인덱스 0에 있으므로 score[0]을 출력)

-----------------------------------------------

과목 이름 >> Java
없는 과목입니다.
과목 이름 >> Java
Java의 점수는 95
과목 이름 >> 안드로이드
안드로이드의 점수는 55
과목 이름 >> 그만

*[Hint] 문자열을 비교하기 위해서는 String 클래스의 equals()메소드를 이용해야 한다.

String name;
if(course[i].equals(name)) {
    int n = score[i];
    ...
}




5. instanceof 에 대하여 설명하시오.

  • instanceof: 객체 타입을 확인하는 연산자이다.
  • 형변환 가능 여부를 확인하며 true / false로 결과를 반환
  • 주로 상속 관계에서 부모객체인지 자식 객체인지 확인하는 데 사용
if(ref instanceof ClassName)

/*
ref가 ClassName 클래스의 인스턴스를 참조하면 true 반환
ref가 ClassName를 상속하는 클래스의 인스턴스이면 true 반환
	 → 앞에오는게 뒤에오는것을 상속하면 true




6. 아래가 돌아가도록 짜시오.

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();
   }
}

package inhertest;

class Friend {
	protected String name;
	protected String phone;

	public Friend(String na, String ph) {
		name = na;
		phone = ph;
	}

	public void showInfo() {
		System.out.println("이름: " + name);
		System.out.println("전화: " + phone);
	}
}

class CompFriend extends Friend {
	private String department;

	public CompFriend(String na, String de, String ph) {
		super(na, ph);
		department = de;
	}

	@Override
	public void showInfo() {
		super.showInfo();
		System.out.println("부서: " + department);
	}
}

class UnivFriend extends Friend {
	private String major;

	public UnivFriend(String na, String ma, String ph) {
		super(na, ph);
		major = ma;
	}

	@Override
	public void showInfo() {
		super.showInfo();
		System.out.println("전공: " + major);
	}
}

public class OverTest {

	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();
		}
	}

}
  • 출력결과
profile
개발 연습장

0개의 댓글