Greenfoot에 익숙하지 않은 모든 사람들에게 문맥은 다음과 같습니다. -Greenfoot에 관한 상속 관련 쿼리
Greenfoot는 일부 애니메이션을 사용하는 자바 학습 도구입니다. 이 도구에는 사전 정의 된 메소드가있는 'Actor'라는 사전 정의 된 클래스가 있습니다. 'Car', 'Truck'등이 클래스의 하위 클래스를 생성하여 객체를 추가 할 수 있습니다.
'Car'및 'Truck'이라는 하위 클래스를 'Actor'에 생성했습니다. 저는 'Actor'클래스에서 미리 정의 된 메서드를 'Car'클래스의 메서드에서 'move (동작의 속도를 나타내는 일부 인수)'라고 말했습니다. move(5);
.
내 질문은 여기에 '자동차'클래스 객체를 여기에 언급 할 필요가없는 이유는 무엇입니까? c1.move(5);
여기서 'c1'은 '자동차'클래스 객체입니까? 나는 'Car'클래스에서 'move'메서드를 정의하지 않았기 때문에 'Actor'클래스에서 미리 정의 된 메서드를 직접 호출하고 구현하지만, 어떻게 'Car'클래스를 의미 하는지를 알 수 있다는 것을 알 수 있습니다. '여기에 클래스 객체가 있습니까? 그것은 'Truck'클래스 객체 일 수도있었습니다! 그것은 'Car'클래스 메서드에서 메서드를 호출하기 때문에 그것은 그것을 유추 무엇입니까?
그렇다면 java 또는 Greenfoot의 특정 구현에서만 일반적인 규칙입니까? 이 방법 내부
Car c = new Car();
c.methodThatCallsMove();
, 당신이 이동을 요구하고있다 (5) 단순히 : 당신이 자동차 클래스의 객체를 생성하고 메소드를 호출하는) (주에서 가정하자
어디에서 move() 메소드를 호출합니까? –
또한 Car 클래스 나 Truck 클래스에 move() 메서드가 정의되어 있지 않으면 Car 클래스와 Truck 클래스에서 상속되는 Actor 내부에서 정의 된 동일한 move() 함수가 모두 작동한다는 것을 나타냅니다. 두 클래스 중 하나에 대해 별도의 구현을 원할 경우 Car/Truck에서 각각 고유 한 move() 메소드를 정의해야합니다. –
@AnkitKhettry Car 클래스의 메서드입니다. – amsquareb