我们创建一个基类 Shape,然后Circle和Square 继承Shape。
第一种情况:Circle 和 Square 都不覆盖基类的方法。
class Shape {
public void draw() {
System.out.println("Shape!");
}
}
class Circle extends Shape {
}
class Square extends Shape {
}
public class Demo03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Circle c = new Circle();
c.draw();
Square s = new Square();
s.draw();
}
}
结果:

第二种情况:Circle 覆盖基类方法 而 Square 不覆盖基类的方法。
class Shape {
public void draw() {
System.out.println("Shape!");
}
}
class Circle extends Shape {
public void draw() {
System.out.println("Circle!");
}
}
class Square extends Shape {
}
public class Demo03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Circle c = new Circle();
c.draw();
Square s = new Square();
s.draw();
}
}
结果:

第三种情况:Circle 和 Square 都覆盖基类的方法。
class Shape {
public void draw() {
System.out.println("Shape!");
}
}
class Circle extends Shape {
public void draw() {
System.out.println("Circle!");
}
}
class Square extends Shape {
public void draw() {
System.out.println("Square!");
}
}
public class Demo03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Circle c = new Circle();
c.draw();
Square s = new Square();
s.draw();
}
}
结果:

结论:如果导出类没有覆盖基类,那就自动运行基类中的方法;如果导出来覆盖了基类,那就运行导出类中覆盖的方法。