Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法覆盖的清晰性_Java_Overriding - Fatal编程技术网

Java 方法覆盖的清晰性

Java 方法覆盖的清晰性,java,overriding,Java,Overriding,对重写方法和重写方法的正确定义感到好奇。 在我的理解中,重写方法是子类中的方法,它使用基类中相同的签名和返回类型重写该方法 但是,我看到一些源代码将被重写的方法称为子类中的方法,该子类重写基类中的方法 那么,哪个是重写方法,哪个是重写方法 对不起,如果这是一个有点愚蠢的问题 class A { public void method() { System.out.println("I don't know if I am overriden, but I'm not ove

对重写方法和重写方法的正确定义感到好奇。 在我的理解中,重写方法是子类中的方法,它使用基类中相同的签名和返回类型重写该方法

但是,我看到一些源代码将被重写的方法称为子类中的方法,该子类重写基类中的方法

那么,哪个是重写方法,哪个是重写方法

对不起,如果这是一个有点愚蠢的问题

class A {
    public void method() {
        System.out.println("I don't know if I am overriden, but I'm not overriding anything");
    }
}
class B extends A {
    public void method() {
        System.out.println("I am overriding A.method() which has now been overriden");
    }
}

您还可以阅读中描述重写、实现、隐藏、重载等的部分,以获得更深入的理解。

假设我们有一个
类子类扩展了超类,那么:

SuperClass#method   <- overridden
          ^
          |
       overrides
          |
  SubClass#method   <- overriding
超类#方法一个直接的例子:

我使用这个例子的原因是,从现实世界的情况来看这个场景。
动物
可能具有某些一般特征。但是
将具有一些不同于一般
动物
的功能,但某些功能是对一般
动物
功能的改进。因此,
Cat
似乎覆盖了
Animal
功能(将包含覆盖方法)

另一个简单的例子,如果你对汽车感兴趣。比如说,有一辆车。它将有一个
加速
方法。但是一辆法拉利显然比一辆汽车有更好的加速性能。但是,法拉利是一辆车。因此,
Ferrari
覆盖了
Car
中的一种方法。所以,重写方法在子类中,而被重写的方法在基类中


那么,你现在明白重点了吗?重写方法存在于子类中。但是被重写的方法存在于基类中。

不要忘记接受一个正确答案!:-)
public class Animal {
    public static void testClassMethod() {
        System.out.println("The class" + " method in Animal.");
    }
    public void testInstanceMethod() {
        System.out.println("The instance " + " method in Animal.");
    }
}



public class Cat extends Animal {
    public static void testClassMethod() {
        System.out.println("The class method" + " in Cat.");
    }
    public void testInstanceMethod() {
        System.out.println("The instance method" + " in Cat.");
    }

    public static void main(String[] args) {
        Cat myCat = new Cat();
        Animal myAnimal = myCat;
        Animal.testClassMethod();
        myAnimal.testInstanceMethod();
    }
}