类和对象的区别
类是虚拟的,抽象的
对象是一个实例化,实际存在的
类由方法和属性构成
类的命名
1.类名要具有描述性
2.每个单词首字母大写,驼峰命名
注意:成员属性前面一定要有修饰词 var/public
面向对象的三大特性:封装,继承(成清楚和使用),多态
封装:
封装是把对象中的成员属性和成员方法,加上访问修饰符,使其尽可能隐藏对象的内部细节,已达到对成员的访问控制(是访问的控制,而不是拒绝访问)。 自己能用,别人不能用
继承中非常重要的
继承(重要)
1.把两个类或者多个类中的相同的部分可以提出来————>父类(基类)子类(派生类)
画图时箭头指向的是父类
2.对于php来说是单继承 (只能继承一个父类,但一个父类可以有多个子类)
重写(覆盖)–在子类中可以写和父类同名的方法
在子类中定义的与父类中同名的属性是对父类属性的重写(覆盖)
在子类中定义的与父类中同名的方法是对父类方法的重写(覆盖)
多态
多态的思想:同一操作作用于不同的对象,会产生不同的执行效果。
技术要求:必须有继承关系,父类最好是接口或者抽象类。
面向对象中的接口
抽象类是一种特殊的类
接口是一种特殊的抽象类
(所以,也可以说,接口是一种特殊的类)
接口和抽象类相比,到底特殊在哪里??
1.接口中的方法,必须全都是抽象方法。但是咱们不用关键字abstract来修饰方法,(因为没必要用abstract关键字了,我们的知道是抽象方法)。
2.声明接口使用interface
3.接口里面的权限都是公有的public
4.接口中的成员属性,必须是常量,不能有变量
注意:
1.可以使用关键字extends继承另一个接口,但是接口和接口之间是扩展关系,没有覆盖(重写)方法的关系
2.可以使一个类用关键字implements来实现接口中的全部方法
可以使一个抽象类用关键字implements来实现接口中的部分方法
3.我们可以使用extends关键字使一个类继承另一个类的同时,在使用implements关键字来实现一个或多个接口(一定要先继承,后实现接口)
4.实现多个接口的时候,需要用逗号分开多个接口