2016-06-26 4 views
0

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) 단순히 : 당신이 자동차 클래스의 객체를 생성하고 메소드를 호출하는) (주에서 가정하자

+0

어디에서 move() 메소드를 호출합니까? –

+0

또한 Car 클래스 나 Truck 클래스에 move() 메서드가 정의되어 있지 않으면 Car 클래스와 Truck 클래스에서 상속되는 Actor 내부에서 정의 된 동일한 move() 함수가 모두 작동한다는 것을 나타냅니다. 두 클래스 중 하나에 대해 별도의 구현을 원할 경우 Car/Truck에서 각각 고유 한 move() 메소드를 정의해야합니다. –

+0

@AnkitKhettry Car 클래스의 메서드입니다. – amsquareb

답변

0

, methodThatCallsMove()는 말 :

methodThatCallsMove(){ 
    move(5); 
} 

이 자동으로 현재 객체의 (즉 c) 방법 move를 호출합니다. 여기에 객체 c에 바인딩 된 move() 버전은 Car 클래스에 별도의 move() 메소드를 구현했는지 또는 Actor 클래스에서 원래 move() 메소드를 단순히 상속하는지 여부에 따라 다릅니다. 전 조건은 Car 클래스에 구현 된 move()를 호출하고 후자는 Actor 클래스에있는 move()를 호출합니다.

희망이 도움이됩니다.

+0

링크의 질문을 살펴보실 수 있습니까? - [link] (http://stackoverflow.com/q/38036106/6442608) – amsquareb