SW공부 30일차

Guryena·2023년 2월 8일
0

CS

목록 보기
23/34

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

  • 부모클래스
    상위 클래스, 슈퍼 클래스

  • 자식클래스
    하위클래스, 상속 클래스

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

  • this
    인스턴스 자신을 가리키는 참조변수

  • this()
    같은 클래스의 다른 생성자를 호출할 때 사용

  • super
    부모, 자식 클래스의 변수/메서드 이름이 똑같을 때 구분위해 사용한다. 부모 클래스의 클래스 멤버 앞에 붙여준다.

  • super()
    자식 생성자 안에서 부모 클래스의 생성자를 호출할 때 사용한다. object클래스를 제외한 모든 클래스의 첫줄에 생성자, this() 또는 super()를 호출해야한다. 이유는 자식 클래스 멤버가 부모 클래스 멤버를 사용할 수 있기 때문에 부모의 멤버들이 먼저 초기화 되어 있어야 하기 때문이다. 생성자를 첫줄에 호출하징 않으면 컴파일러가 자동으로 super()를 생성자의 첫줄에 삽입한다.

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

  • 단일 상속
    단일 상속을 사용하면 파생 클래스가 단일 상위 클래스에서 속성 및 동작을 상속할 수 있다. 파생 클래스가 기본 클래스의 속성과 동작을 상속할 수 있으므로 코드 재사용이 가능하고 기존 코드에 새 기능을 추가할 수 있다. 이것은 코드를 간결하고 덜 반복적으로 만든다. 상속은 객체 지향 프로그래밍(OOP)의 주요 기능 중 하나이다.

올바른 방법으로 접근하는 경우 단일 상속이 다중 상속보다 안전하다. 또한 파생 클래스 또는 상위 클래스 생성자에서 이 메서드가 재정의된 경우 파생 클래스가 특정 메서드에 대해 상위 클래스 구현을 호출할 수 있다.

  • 다중 상속
    어떤 클래스가 하나 이상의 상위 클래스로부터 여러 가지 행동이나 특징을 상속받을 수 있는 것을 말한다.

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 Test {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String[] course = { "Java", "C++", "HTML5", "ComputerStructure", "Android" };
		int[] score = { 95, 88, 76, 62, 55 };

		while (true) {
			String name = sc.next();
			boolean missMatch = false;
			for (int i = 0; i < course.length; i++) {
				if (name.equals("Stop") || name.equals("stop")) {
					System.exit(0);
				}
				if (course[i].equals(name)) {
					System.out.println("Class Name >> " + course[i]);
					System.out.println("Score of " + course[i] + " is " + score[i]);
					break;
				}
				else if(course[i] != name)  {
					missMatch = true;
					break;
				}
			}
			if (missMatch) {
				System.out.println("Be not class");
			}

			continue;

		}
	}
}

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

instanceof 연산자는 생성자의 prototype 속성이 객체의 프로토타입 체인 어딘가 존재하는지 판별한다.

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();
   }
}
//부모클래스
public class Friend {
	protected String name;
	protected String phone;

	public Friend(String name, String phone) {
		this.name = name;
		this.phone = phone;
	}

	public void showInfo() {
		System.out.println("Name : " + name);
		System.out.println("Phone : " + phone);

	}
}
public class CompFriend extends Friend {
	private String department;

	public CompFriend(String name, String department, String phone) {
		super(name, phone);
		this.department = department;
//		showInfo();
//		System.out.println();
	}

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

}
public class UnivFriend extends Friend {
	private String major;

	public UnivFriend(String name, String major, String phone) {
		super(name, phone);
		this.major = major;
//		showInfo();
//		System.out.println();
	}

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

}

0개의 댓글