PHP面向对象
黄鸭 3/13/2022 server
# 选择题
以下说法错误的是:
A. 在外部访问静态成员属性时,使用类名::静态成员属性名
B. 在外部访问静态成员属性时,使用$实例化对象->静态成员属性名:错误,在类内部使用self::静态方法
C. 在外部访问静态方法时,使用类名::静态方法名
D. 在外部访问静态方法时,使用类名::静态方法名
查看答案
B 错误,在类内部使用self::静态方法
# 组合和继承的区别
查看答案
- 在新类里面创建原有类的对象,重复利用已有类的功能。
- 可以使用现有类的功能,并且在无需重复编写原有类的情况下对原有类进行功能上的扩展。
- 组合比继承省略了依赖关系
# 访问类中静态成员或函数应通过特殊类
查看答案
类名::
或 self::
进行访问。
# 什么是抽象类和接口?抽象类和接口有什么不同和相似的地方?
查看答案
- 抽象类是一种不能被实例化的类,只能作为其他类的父类来使用。
- 抽象类是通过关键字
abstract
来声明的。 - 抽象类与普通类相似,都包含成员变量和成员方法,两者的区别在于,抽象类中至少要包含一个抽象方法。
- 抽象方法没有方法体,该方法天生就是要被子类重写的。
- 抽象方法的格式为
abstract function abstractMethod();
。 - 因为PHP中只支持单重继承,所以如果想实现多重继承,那么就要使用接口。也就是说,子类可以实现多个接口。
- 接口类是通过
interface
关键字来声明的,接口类中的成员变量和方法都是public
的,可以不用显式地使用public
来修饰。 - 接口中的方法没有方法体。接口中的方法天生就是要被子类继承实现的。
- 子类继承抽象类使用extends关键字,子类实现接口使用
implements
关键字。
# 抽象类至少有一个抽象方法吗?
查看答案
如果一个类中有一个抽象方法,那么该类必须为抽象类,但抽象类中可以没有抽象方法。