近期面试的几个问题

1. 静态方法?静态属性?

静态属性:

  • 静态属性是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。
  • 访问修饰符为public 的静态属性可以在类的外面调用,访问修饰符为private,protected的静态属性;

静态方法:
静态方法用于专门操作静态属性,以便提高效率(当然普通方法也可以调用静态变量);

在一些设计模式中会广泛应用到静态属性和静态方法,比如单例模式,工厂模式,观察者模式;

单例模式:
在程序运行过程中,要保证某个类始终只能有一个对象实例, 因为在程序运行中,我们需要一个对象就够了;

  • 三私一公

2. 简单介绍一下继承?

  • 在面向对象编程中,存在三个特征(封装,继承,多态);
  • 继承可以有效的解决代码复用的问题;
  • 继承不能简单的理解成子类定义时,会把父类的属性声明,方法定义拷贝一份,而是建立了继承查找的的关系;
  • 如果在子类中需要访问其父类的方法(构造方法/成员方法 方法的访问修饰符是public/protected),可以使用父类::方法名(或者 parent::方法名 ) 来完成;
  • 如果子类(扩展类)中的方法和父类(基类)方法相同,我们称为方法重写, 关于方法的重写,我们会单独细致讲解;

方法的重载

  • php 本身不能够实现方法的重载,是借用__call 魔术方法来实现方法的重载;

属性的重载

  • 属性的重载指的是"动态"的创建对象属性,要注意的是动态创造的属性是public 属性的;

方法的重写

方法重写就是子类有一个方法,和父类(基类)的某个方法的名称、参数个数一样,那么我们就说子类的这个方法重写了父类的那个方法.

属性的重写

当一个子类的属性和父类的属性完全一样时,我们就叫子类的属性重写了父类的属性.

final关键字

    1. 希望某个方法不能重写,则可以将该方法做出final方法, 即使用final关键字去修饰该方法即可.
    1. 希望某个类不能继承,则可以将该类做成final类, 即使用final关键字去修饰该类即可
  • 要注意:
    final 不能修饰成员属性;
    final 方法不能被重写,但是可以被继承使用;
    final 类不能被继承,但是可以实例化;

3. 设计模式

你可能感兴趣的:(近期面试的几个问题)