0

让我们看看这个类的构造:

class A
{
    public static function aa() { }
}

class B extends A
{
    public static function bb() { }
}

在这里,B:bb();并且A:aa();是有效的。但为什么B:aa();仍然有效?不是说我直接调用的aa方法B吗?为什么继承和覆盖在这里起作用?

4

1 回答 1

5

作为class B extends class A,类 B 具有 A 也具有的所有受保护公共方法。

通过调用B:aa()编译器查看是否B:aa()在 B 类中被覆盖,如果没有,它会调用父类,在本例中为 A 类。

在面向对象编程 (OOP) 中,扩展类也称为继承,B 类从 A 类继承所有公共和受保护方法

于 2012-09-30T15:28:00.737 回答