Vehicle 이란 superclass가 있고 Car이란 subclass가 있는데 Vehicle v1 = new Vehicle(); Vehicle v2 = new Car(); 두가지 경우가 있다해요 1. Vehicle class has a method named drive. Car class also has a method named drive (overwritten) 그럼 v1.drive 하면 vehicle class에 있는 드라이브를 call 하는거고 v2.drive 하면 Car class에 있는 드라이브가 call 되는건가요? 2. Only vehicle class has a method named drive. 이때는 v1.drive 랑 v2.drive 모두 Vehicle class에 있는 drive를 call 하나요 3. Only car class has a method named drive 이때 v1.drive하면 에러나나요? v2.drive는? 자바 영어로 쳐배워서 한글로 잘 못적겠음 이해좀,, |
적고보니 3가지 경우네
뎃츠 엘리멘터리 스쿨 퀘스쳔... 고 투 유얼 엘리멘터리 스쿨 티쳐
아임 어 유니버서티 프로페서
유니버서티 프로페서 더즈 낫 티치 엘리멘터리 스쿨 띵즈
컴공을 유니버시티 와서 첨배워서 잘몰라요
inheritance 랑 node가 너무 햇갈림
뭐 그런걸묻냐 니가 직접 코딩해보면 되잖아
답을 알려주자면 1) v1.drive() -> Vechine.drive(), v2.drive() -> Car.drive(); 2) 양 쪽 다 Vechine.drive(); 3) 양 쪽 다 컴파일 에러 입니다. 하지만 반드시 직접 코딩해 보시고 왜 그런지 곰곰히 생각해 보시기 바랍니다.
3번 양쪽다 컴파일 에러인거는 v1 v2 전부 superclass reference 에 subclass object 여서 subclass method를 못쓰는 거 같아요
2번 양쪽다 Vehicle.drive() 인 이유는 3과 비슷하게 superclass reference 니까 superclass method 를 call 하는거 같고
1번은 subclass 에서 drive method를 override했으니까 v2.drive 하면 Car.drive() 인거 같아요