PHP中final类,抽象类,接口结构
来源:互联网 发布:新疆人 知乎 编辑:程序博客网 时间:2024/04/30 05:51
final类
概念:在继承链上的末尾, 其下不能出现出现子类,也就是不能被继承
final类
格式如下,就是在类前面加一个final关键字
final class Goods {public $goods_name;public $goods_price;}
final,并没有增加额外的功能!意义是,在语法上限制某个类不能被继承!从而保证数据的完整性!
final方法
final关键字还可以限制方法,表示该方法不能被重写
class Goods {public $goods_name;public $goods_price;final public function in_C(){return $this->goods_price;}}class Book extends Goods{public $anthor;public $publisher; public function in_C(){ return $this->author; }}
像上面写的那样就是会报错的
抽象类 abstract
抽象类:指的是包含抽象方法的类叫做抽象类,不能用于实例化对象,只能用户继承。
抽象类是不完整类因为包含不完整方法
不完整的方法,也叫抽象方法,指的是没有方法体的方法,称之为只有方法的声明,而没有方法的实现的方法称之为抽象方法。也就是不完整的方法!
abstract class Goods {public $goods_name;public $goods_price; public function in_j(){}//这样是对的 public function in_C(); //这样是错误的 abstract public function in_C();//这样就是对的,如果类前不加关键字也是错的 //抽象类中可以没有不完整函数}
注意:抽象类是可以包含其他任何正常的成员的,在此基础上,增加了内部的抽象方法!
(并不是抽象类中只能包含抽象方法)
也就是说只能被继承abstract class Goods {public $goods_name;public $goods_price; public function in_j(){}//这样是对的 public function in_C(); //这样是错误的 abstract public function in_C();//这样就是对的,如果类前不加关键字也是错的 //抽象类中可以没有不完整函数}class Book extends Goods{public $anthor;public $publisher; public function in_C(){ return $this->author; }}
使用意义
可见,抽象类,可以规定其非抽象子类,必须要存在的相应成员方法!
可以规定,子类中都必须存在,但是可以不同的方法!
abstract class Goods {public $goods_name;public $goods_price; public function in_j(){}//这样是对的 //public function in_C(); //这样是错误的 abstract public function in_C();//这样就是对的,如果类前不加关键字也是错的 //抽象类中可以没有不完整函数}final class Book extends Goods{public $anthor;public $publisher; public function in_C(){ return $this->author; }}final class Phone extends Goods{public function in_C(){return $this->goods_price;}}
几个概念:
抽象:abstract,不完整的意思!
实现:implement。将方法完整化!
接口结构,interface
接口指的是对象的公共方法。
也有一种结构技术,定义一个接口结构用于限制一个类(对象)应该具备的共有方法。
声明:关键字interface声明
interface i_Goods{public function sayName();public function sayPrice();}
注意,接口内只能包含公共的抽象方法(不完整的方法)!
接口定义的函数不能有函数体,只能有函数名和参数列表
使用方法:是定义一个类来实现接口内所定义的所有接口方法(公共方法)
abstract class Goods implements i_Goods{public $goods_name;public $goods_price;}
interface i_Goods{public function sayName();public function sayPrice();}abstract class Goods implements i_Goods{public $goods_name;public $goods_price;}class Book implements i_Goods{public $anthor;public $publisher;}
实现接口的类,有两种选择,1是抽象类实现(不能缺少)2、实现接口方法
抽象类和借口的区别:
1、抽象类与普通类之间的关系是继承
普通类继承了抽象类既可以得到抽象类的常规成员,又可以实现抽象方法(不一定是public)
2、抽象类与普通类之间是实现的关系
普通类实现了接口,只是将其没有实现的公共方法实现。
3、接口值用于定义抽象方法,而抽象类什么都可以
多实现
abstract class Goods implements i_Goods,i_Good{public $goods_name;public $goods_price;}
接口也可以定义常量
interface i_Goods{const PAI = 3.4;public function sayName();public function sayPrice();}abstract class Goods implements i_Goods{public $goods_name;public $goods_price;}class Book implements i_Goods{public $anthor;public $publisher;public function sayPrice(){}public function sayName(){}}echo Book::PAI;
辨析:
1、接口是不是类,
接口不是类,接口是限制类的一种结构,是独立的,可以理解为“接口定义的所有的方法都是公共的不完整(抽象)方法,而且没有其他成员的抽象类”,但是和类完全是两个概念
2、PHP是单继承,能不能实现多继承?
“可以通过接口实现多继承?”
不能实现多继承
1 0
- PHP中final类,抽象类,接口结构
- 抽象类,接口,final
- php面向对象语法5 final类,抽象类,接口结构(不是类)
- final、抽象类和接口
- 抽象类、接口和final
- final,多态,抽象类,接口
- final关键字、抽象类、接口
- 抽象类、接口、final、static
- final 抽象类 抽象方法 接口
- Java中final关键字,抽象类与接口
- 黑马程序员-----java中final关键字、抽象类、接口总结*
- “黑马程序员”Java中final关键字,抽象类与接口
- Java中final关键字,抽象类与接口
- Java中 关键字final,抽象类abstract, 接口interface ,多态
- java中的final、抽象类、接口小结
- java 基础5 抽象类 接口 final
- 重写、多态、抽象类、final及接口
- final和抽象类和接口
- Redis线程池及分布式
- 静心的一天
- 在对话框和widget窗口添加菜单
- Dalvik switch语句
- karma requirejs 加载问题小记
- PHP中final类,抽象类,接口结构
- 编写高质量iOS 与OSX 代码的52个有效方法之系统框架
- Android RecyclerView使用详解四
- Two Sum LeetCode OJ
- poj 3281 网络流最大流量
- 专题:如何写测试——Spark
- Null & nil & Nil & NSNull
- XML应用于处理
- pydev的注释快捷键