在java面向对象编程中,我们最常遇到的两个场景是覆盖和重载。这两种情形是因为方法名相同的不同展现形式。
方法覆盖是表现在父类和子类之间。
方法重载发生在一个类的内部。
在面向对象编程中,我们还可能出现下面几种场景:
隐藏:在父类中定义了静态方法,在子类中,定义了同名的静态方法。
package com.xxx.oop;
public class HideExample {
public static void main(String[] args) {
Dog dog = new Dog();
Dog basenji = new Basenji();
//Basenji basenji = new Basenji();
dog.bark();
basenji.bark();
System.out.println(dog.name);
System.out.println(basenji.name);
}
}
class Dog{
protected String name = "dog";
public static void bark(){
System.out.println("woof");
}
}
class Basenji extends Dog{
protected String name = "basenji";
public static void bark(){
System.out.println("miao");
}
}
程序运行的结果:
woof
woof
dog
dog
&n