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에서 자동으로 생성해주기 때문임?

과제중인데 과제랑은 관련없지만 그냥 왜되지? 싶어서 물어봄.,,,,,,,ㅠㅠ