PHP面向对象

3/13/2022 server

# 选择题

以下说法错误的是:
A. 在外部访问静态成员属性时,使用类名::静态成员属性名
B. 在外部访问静态成员属性时,使用$实例化对象->静态成员属性名:错误,在类内部使用self::静态方法
C. 在外部访问静态方法时,使用类名::静态方法名
D. 在外部访问静态方法时,使用类名::静态方法名

查看答案

B 错误,在类内部使用self::静态方法

# 组合和继承的区别

查看答案
  • 在新类里面创建原有类的对象,重复利用已有类的功能。
  • 可以使用现有类的功能,并且在无需重复编写原有类的情况下对原有类进行功能上的扩展。
  • 组合比继承省略了依赖关系

# 访问类中静态成员或函数应通过特殊类

查看答案

类名::self:: 进行访问。

# 什么是抽象类和接口?抽象类和接口有什么不同和相似的地方?

查看答案
  • 抽象类是一种不能被实例化的类,只能作为其他类的父类来使用。
  • 抽象类是通过关键字abstract来声明的。
  • 抽象类与普通类相似,都包含成员变量和成员方法,两者的区别在于,抽象类中至少要包含一个抽象方法。
  • 抽象方法没有方法体,该方法天生就是要被子类重写的。
  • 抽象方法的格式为abstract function abstractMethod();
  • 因为PHP中只支持单重继承,所以如果想实现多重继承,那么就要使用接口。也就是说,子类可以实现多个接口。
  • 接口类是通过interface关键字来声明的,接口类中的成员变量和方法都是public的,可以不用显式地使用public来修饰。
  • 接口中的方法没有方法体。接口中的方法天生就是要被子类继承实现的。
  • 子类继承抽象类使用extends关键字,子类实现接口使用implements关键字。

# 抽象类至少有一个抽象方法吗?

查看答案

如果一个类中有一个抽象方法,那么该类必须为抽象类,但抽象类中可以没有抽象方法。

更新时间: 2023-02-19 11:11