IT 면접 족보30

권단비·2023년 2월 8일
0

IT

목록 보기
63/139

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

▼정답

부모 클래스 : 상위 클래스, 기초 클래스
자식 클래스 : 하위 클래스, 유도 클래스

2.super 키워드와 this 키워드의 차이는 무엇인가요?

▼정답

this : 현재 클래스 내
객체 자기 자신을 가리키는 용도
자기 변수를 호출하거나 생성자를 호출하는 함수

super : 상속
자식 클래스에서 부모 클래스에 있는 생성자 호출

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

▼정답

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

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
없는 과목입니다.
과목 이름: 그만
종료합니다.

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

▼정답

레퍼런스 변수(객체) instanceof 클래스명
형변환 가능하면 true 아니면 false를 리턴한다.
box의 주소를 찾아가서 PaperBox가 메모리에 올라와 있는지 찾는 것.

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

▼정답

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();
		} // 이러한 클래스 디자인 기반에서 관리 대상이 넷, 다섯으로 늘어난다면?
			// 인스턴스 관리와 관련해서 코드가 복잡해지지 않는다.
	}
}

0개의 댓글