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