让我们看看这个班级建设:
class A
{
public static function aa() { }
}
class B extends A
{
public static function bb() { }
}
此处B:bb();
和A:aa();
有效。但为什么B:aa();
仍然有效?这不是说我直接调用aa
的{{1}}方法吗?为什么继承和压倒在这里工作?
答案 0 :(得分:5)
当class B
扩展 class A
时,B类具有A所拥有的每个受保护的和公共方法。
通过调用B:aa()
,编译器会查看是否在类B中覆盖B:aa()
,如果没有,则调用父类,在这种情况下为A类。
在面向对象编程(OOP)中,扩展类也称为继承,B类从类A继承所有公共和受保护的方法