PHP类中的抽象类,抽象方法,abstract
来源:互联网 发布:微软软件授权许可协议 编辑:程序博客网 时间:2024/05/18 06:05
就是一个不能实例化(不能new)的类。
定义形式:
abstract class 类名{
//跟之前一样,定义类的成员就行
}
为什么需要这样一个“抽象类”——它不能实例化对象。
请看如下代码:
可见:
抽象类的目的不是为了得到一个自己的对象,而是为了“后代类”服务,给后代类提供一定的属性和方法。
再看一个具体一点的应用场景:
抽象方法,就是一个“啥也不做”的方法:
定义形式:
abstract function 方法名(形参1,形参2,... );
可见:
1,抽象方法,只定义方法头,没有大括号部分的方法体;
2,可以看到,该方法实际上没有任何可执行的代码,自然并不能做任何事情;
3,该方法是“专用于被覆盖(重写)”;——实际上,抽象方法,是要求下级必须重写。
可见:
这种抽象类,抽象方法,其实目的是:设计上级类的人(程序员),要求设计下级类的人(成员),必须是做到哪些事情,但又不规定怎么做。
抽象类和抽象方法的一些要求
l 1,一个抽象方法,必须放在抽象类中。
l 2,但:一个抽象类中,可以没有抽象方法——实际应用中,其实很少见。
l 3,下级类必须去“重写”上级类中的抽象方法,并给定具体实现代码(即该方法有方法体);
——但如果下级类本身又是抽象类,就可以不这么做——当然,做(去实现)也可以。
l 4,下级类实现上级类的抽象方法的时候,也要遵循如下原则:
n a,访问修饰符的范围不能更小;
n b,方法的参数跟上级类定义的保持一致;
n ——其实上两条要求是“重写”的要求,而这里,其实本质就是重写。
其代码原理如下:
abstract class A{
public $p1;
abstrct function f1();
}
class B extends A{
function f1(){ ... }
}
abstract class C extends A{
public $p2;
function f2(){ .... }
abstrct function f3();
}
这样,
B必须是实现f1(),
而:
C可以不实现f1(),也可以实现;
如果C没有实现f1()则:
C的后代类也得去实现f1(),还得去实现f3()
- PHP类中的抽象类,抽象方法,abstract
- abstract抽象类和abstract抽象方法
- abstract 抽象方法、类
- 类中的 抽象方法 与抽象类 使用关键字 abstract
- abstract 抽象类与抽象方法
- 抽象类与抽象方法 abstract
- abstract 抽象类与抽象方法
- java 抽象类 抽象方法 abstract
- abstract抽象类和抽象方法
- 抽象类和抽象方法 abstract类和abstract方法
- java中的抽象类abstract
- Java (Abstract Method)抽象方法、(Abstract Class)抽象类
- 抽象类 抽象成员 abstract
- php 中抽象的方法和抽象类的定义 abstract
- PHP程序中的抽象方法和抽象类
- 4.3抽象类abstract和接口interface定义implements实现接口中的抽象方法
- php中的抽象类
- 抽象类和抽象方法:Abstract and override,Event ,Indexer
- yolo9000学习笔记
- DMOS算法介绍及算法原理
- 工作第五周啦,总结一下这么久都干的事吧
- return 生存周期问题
- Bootstrap基础25——附加导航affix
- PHP类中的抽象类,抽象方法,abstract
- SpringMVC中的数据校验
- java成员变量,类变量,局部变量
- Ubuntu14.04安装scipy,xgboost,dateutil模块到python3
- html在线预览cad图纸插件
- Android开发中所积累的一些自定义控件和工具
- 基于Dragonboard 410c的音乐储钱罐(二)
- 关于 图的 一些基本概念~~·
- 2016 蓝桥杯 国赛 JAVA A组第二题 凑平方数