자식 클래스에서 메서드의 모든 내용을 다시 작성하고 해당 함수를 변경하려는 경우 왜 다른 이름으로 새 메서드를 작성할 수 없습니까? 차이점이 뭐야? 나는 이것이 간단한 질문이라는 것을 알고있다. 그러나 나는 프로그래밍에 익숙하지 않고 매우 혼란 스럽습니다. 고마워.왜 부모 클래스의 메서드를 재정의해야합니까?
1
A
답변
1
그런 종류의 일에 공통적 인 기능에 다른 행동을 부여하는 것입니다. 예를 들어 모든 차량의 경고음을 들려 주겠지 만 Car Honk 's와 Moped Meep Meeps!
class Vehicle {
public void beep() {
System.out.println("Beep!");
}
}
class Car extends Vehicle {
@Override
public void beep() {
System.out.println("Honk!");
}
}
class Moped extends Vehicle {
@Override
public void beep() {
System.out.println("Meep Meep!");
}
}
1
이는 Polymorphism입니다. 링크를보십시오.
간단한 예제는 Java Collections 프레임 워크입니다. 인터페이스를 사용할 때 List
인터페이스가 있습니다. add
또는 size
이 어떻게 작동하는지 알고 싶지 않습니다. 그것은 단지 작동해야합니다.
구현 측면에서는 ArrayList
또는 LinkedList
에 대한 차이점이 항목 저장 방식에 따라 다릅니다.
이미 구현 된 수퍼 클래스의 메서드를 살펴볼 때 다른 동작을 사용하려면 하나의 메서드가 필요할 수 있습니다. 이제 현재 코드에서 메소드 호출을하는 척하십시오. 변수를 변경하지 않으려면 해당 메소드를 재정의하면 클라이언트는 기능을 사용하기 위해 코드를 변경하지 않아도됩니다.
1
재정의는 재정의 상속을 사용하는 동안 사용할 수있는 기능입니다.
다른 클래스에서 확장 된 클래스가 부모 클래스의 기능 대부분을 사용하려고하지만 특정 경우에 특정 기능을 구현하려고 할 때 사용됩니다.
class Animal{
public void move(){
System.out.println("Animals can move");
}
}
class Dog extends Animal{
public void move(){
System.out.println("Dogs can walk and run");
}
}
class Cat extends Animal{
}
public class TestDog{
public static void main(String args[]){
Animal a = new Animal(); // Animal reference and object
Animal b = new Dog(); // Animal reference but Dog object
Animal c = new Cat(); // Animal reference but Cat object
a.move();// runs the method in Animal class
b.move();//Runs the method in Dog class
c.move();//Runs the method super method
}
}
그래서 부모 클래스를 사용하여 당신은 필요한 곳에 당신이 그것을 대체 할 수 있습니다 동물을 확장하는 클래스의 각() 이동을 정의 할 필요 없어요.
관련 문제
- 1. final 클래스의 equals() 및 hashCode() 메서드를 재정의해야합니까?
- 2. Object.equals (Object) 메서드를 재정의해야합니까?
- 3. PHP에서 부모 클래스의 메서드를 호출해야합니다.
- 4. ViewController가 변경되면 dealloc 메서드를 재정의해야합니까?
- 5. 가상 메서드를 C#에서 명시 적으로 재정의해야합니까?
- 6. 복제 가능한 클래스를 원한다면 왜 복제본을 재정의해야합니까?
- 7. 부모 클래스의 자식 메서드를 사용하여 attr_accessor를 호출하십시오.
- 8. 자식 클래스가 부모 클래스의 메서드를 사용하도록하는 방법
- 9. 언제 equals 및 hashcode 메서드를 재정의해야합니까?
- 10. ValidationAttribute를 구현할 때 어떤 IsValid 메서드를 재정의해야합니까?
- 11. Python에서 자식 클래스의 부모 클래스의 메서드를 호출 하시겠습니까?
- 12. 자식 클래스 양식 부모 클래스 (UIButton)의 속성을 재정의해야합니까?
- 13. 부모 클래스에서 메서드를 재정의하려고 할 때 오류가 발생합니다. 왜 그런가요?
- 14. 언제 toString()을 재정의해야합니까?
- 15. 왜지도 구현이 foreach를 재정의해야합니까?
- 16. 레일 컨트롤러 클래스가 부모 클래스의 메서드를 상속하지 않습니다.
- 17. 부모 클래스 배열에서 자식 클래스의 메서드를 가져올 수 없습니다.
- 18. 추가 플래그없이 부모 클래스의 자식 클래스 재정의 메서드를 알면
- 19. 여러 개의 중첩 된 내부 클래스의 부모 메서드를 호출하는 방법
- 20. 개체에서 부모 클래스의 메서드를 호출하는 가장 좋은 방법
- 21. Error : 부모 클래스의 추상 메서드를 구현하는 사례 클래스
- 22. Child 클래스의 재정의 메서드에서 부모 메서드를 호출하는 방법
- 23. 부모 클래스의 메소드 호출
- 24. GestureDetector.SimpleOnGestureListener의 onDown()을 재정의해야합니까?
- 25. 부모 클래스의 실행 방법은
- 26. 자식 클래스의 개체를 참조하는 부모 클래스 참조를 사용하여 Parent 클래스의 자식 메서드를 호출해야하는 이유는 무엇입니까?
- 27. Authorize 특성에 대해 어떤 멤버쉽 및 역할 공급자 메서드를 재정의해야합니까?
- 28. 자녀가 부모 메서드를 호출하도록하려면 어떻게해야합니까?
- 29. 부모 클래스의 자식 메서드 호출
- 30. 부모 클래스의 목록을 가져옵니다
부모와 동일한 서명을 메서드에 제공하면 부모가 새 것으로 제공 할 기능을 바꿉니다. 다른 서명을 주면, 그것은 –