public static void modeSelect() {
System.out.print("계산할 타입을 선택해 주세요(1. BMI, 2. BFP, 3. BMR, 4. CI) : ");
String s = scan.nextLine();
HealthCalculator p = null; //업캐스팅했는데 println(toString)메서드 동작 이유> 슈퍼클래스 헬스컬큘레이터에 기본으로 있어서?
switch(s) {
case "1":
case "BMI":
p = new BMICalculator();
p.getUserInput();
break;
case "2":
case "BFP":
p = new BFPCalculator();
p.getUserInput();
break;
case "3":
case "BMR":
p = new BMRCalculator();
p.getUserInput();
break;
case "4":
case "CI":
p = new CalorieIntakeCalculator();
p.getUserInput();
break;
}
System.out.println(p);
}
HealthCalculator가 부모 클래스고 나머지 Calculator는 다 서브클래스인데 저기서 업캐스팅 해줬잖아? 그럼
슈퍼클래스인 HealthCalculator에 있는 메소드만 사용할 수 있는거 아님? HealtCalculator 에는 toString메소드 안만들어놨는데
System.out.println(p) 가 동적바인딩돼서 정상 작동하는 이유가 뭐임?
toString메서드는 직접 정의 안내려도 Object에서 자동으로 생성해주기 때문임?
과제중인데 과제랑은 관련없지만 그냥 왜되지? 싶어서 물어봄.,,,,,,,ㅠㅠ
이클립스쓰고있삼
잘 알고있네 - dc App