import java.util.Scanner;
class PhoneNumbers{
String name;
String phone;
PhoneNumbers(String n, String p){
name=n;
phone=p;
}
void show() {
System.out.println("이름 : "+name);
System.out.println("번호 : "+phone);
}
}
class SchoolMate extends PhoneNumbers{
String major;
SchoolMate(String n, String p, String major){
super(n, p);
this.major=major;
}
@Override
void show() {
super.show(); // 부모클래스 show 호출하기
System.out.println("전공 : "+major);
}
}
class Co_workers extends PhoneNumbers{
String grade;
Co_workers(String n, String p, String g){
super(n,p);
grade=g;
}
@Override
void show() {
super.show();
System.out.println("직급 : "+grade);
}
}
class Arr{
PhoneNumbers [] ary; // 객체배열
int n;
Arr(int n){ // 생성자 역할 : 초기화 작업
ary=new PhoneNumbers[n]; // PhoneNumbers [] ary = new PhoneNumbers[5];
n=0;
}
void add(PhoneNumbers p) {
ary[n++]=p; //친구추가
}
void friend(char ch) {
Scanner scanner=new Scanner(System.in);
System.out.println("이름: ");
String name=scanner.nextLine();
System.out.println("번호: ");
String num=scanner.nextLine();
switch(ch) {
case'A': // 학교친구 입력
System.out.println("전공: ");
String major=scanner.nextLine();
add(new SchoolMate(name, num, major));
//PhoneNumber p = new School(name, num, major);
break;
case'B': // 회사동료 입력
System.out.println("직급: ");
String grade=scanner.nextLine();
add(new Co_workers(name, num, grade));
//PhoneNumber p = new School(name, num, grade);
break;
}
}
void all() {
for(int i=0;i<n;i++) {
ary[i].show();
}
}
}
public class mmdd0229 {
public static void main(String[] args) {
Arr ar = new Arr(5);
//객체 배열 5개
while(true) {
System.out.println("A. 학교친구");
System.out.println("B. 직장동료");
System.out.println("C. 종 료");
System.out.println("D. 출 력");
System.out.println("문자입력: ");
Scanner scanner=new Scanner(System.in);
char c=scanner.next().charAt(0); // A~D중 하나 입력
switch(c) {
case 'A':
ar.friend(c);
break;
case 'B':
ar.friend(c);
break;
case 'C':
System.out.println("종료"); //
return;
// continue를 적으면 아예 종료가 되기 때문에, return으로 가야 다시 위에서부터 반복될듯..?
//return 문은 현재 메소드를 종료하고 호출자에게 반환하며, 만약 이 메소드가 main 메소드라면 프로그램 전체가 종료됩니다.
//continue 문은 현재 반복의 나머지 부분을 건너뛰고 다음 반복으로 넘어가는 데 사용됩니다.
//하지만 여기서는 반복문이 아니라 switch 문 안에서 사용되고 있기 때문에 continue를 사용할 수 없습니다.
case 'D':
ar.all();
break;
}
}
}
}