第三周 PHP面向对象
来源:互联网 发布:安卓版ps软件中文版 编辑:程序博客网 时间:2024/06/09 23:19
# 属性 方法
变量(也称为”属性”),函数(也称为”方法”),都是类的成员.
- 静态属性或者方法在类的内部调用 self::方法名/属性名(属性名不加$会报错)
- 静态属性或者方法在类的外部调用 类名::方法名/属性名(属性名不加$会报错)
- 非静态静态属性或者方法在类的内部调用 $this->方法名/属性名(这里的属性不能加$)
- 非静态静态属性或者方法在类的外部调用 先实例化 再 $this-> 方法名/属性名(这里的属性不能加$)
//markdown 转义字符 “\$” 原样输出
php类属性方法的调用
类的三大特性
封装
把成员方法和成员属性封装到类中,隐藏属性和方法实现的细节
- public
- default
- protected
- private
继承
可以使一个类继承并拥有另一个已经存在类的成员属性和方法,被继承的类称为父类或基类,继承类为子类
- 子类最多只能继承一个父类,而父类可以有多个子类
- 如果要在子类里面使用父类的方法,可以用父类名::父类方法来表示或者用parent::父类方法来表示
- 私有private只能被自身的类访问
多态
在面向对象中能够根据使用类的上下文来重新定义或改变类的性质和行为。
- php声明变量不需要给变量设定类型,一个变量可以指向不同的数据类型,所以php不具有像java那种清晰的多态
OC学习篇之—类的三大特性(封装,继承,多态)
关键字
static 静态
声明类属性或方法为静态,就可以不实例化类而直接访问。静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。
- 不加static的方法要先创建对象才能在对象上使用
- 只有static方法可以直接用 类名::方法名() 调用
- 要覆盖的方法不能有static关键字
类和对象:静态属性、静态方法
浅析php静态方法与非静态方法的用法区别
const 常量
常量的值一旦被定义后就不可在程序中更改。
- 只可以修饰成员属性,不可以修饰方法
- 调用的时候需要使用 类名::常量
const constant = "value";
PHP常量详解:define和const的区别
final
如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。
- 属性不能被定义为 final,只有类和方法才能被定义为 final。
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
第三周作业
<?phpinterface CalInterface{ public function add($mun1,$num2); public function sub($mun1,$num2); public function mul($mun1,$num2); public function div($mun1,$num2);}class Calculate implements CalInterface{ public function add($num1,$num2){ echo "$num1 + $num2 = ".($num1+$num2).PHP_EOL; } public function sub($num1,$num2){ echo "$num1 - $num2 = ".($num1-$num2).PHP_EOL; } public function mul($num1,$num2){ echo "$num1 * $num2 = ".($num1*$num2).PHP_EOL; } public function div($num1,$num2){ echo "$num1 / $num2 = ".($num1/$num2).PHP_EOL; }}$InPut = $_POST['InPut'];$Cal = new Calculate();if($pos=strpos($InPut,"+")) { if( preg_match("/^\d*$/",substr($InPut, 0, $pos)) && preg_match("/^\d*$/",substr($InPut, $pos+1, strlen($InPut)-1)) ){ $num1=vsprintf("%d",substr($InPut, 0, $pos)); $num2=vsprintf("%d",substr($InPut, $pos+1, strlen($InPut)-1)); $Cal->add($num1,$num2); } else { echo "Wrong InPut"; }}else if($pos=strpos($InPut,"-")) { if( preg_match("/^\d*$/",substr($InPut, 0, $pos)) && preg_match("/^\d*$/",substr($InPut, $pos+1, strlen($InPut)-1)) ){ $num1=vsprintf("%d",substr($InPut, 0, $pos)); $num2=vsprintf("%d",substr($InPut, $pos+1, strlen($InPut)-1)); $Cal->sub($num1,$num2); } else { echo "Wrong InPut"; }}else if($pos=strpos($InPut,"*")) { if( preg_match("/^\d*$/",substr($InPut, 0, $pos)) && preg_match("/^\d*$/",substr($InPut, $pos+1, strlen($InPut)-1)) ){ $num1=vsprintf("%d",substr($InPut, 0, $pos)); $num2=vsprintf("%d",substr($InPut, $pos+1, strlen($InPut)-1)); $Cal->mul($num1,$num2); } else { echo "Wrong InPut"; }}else if($pos=strpos($InPut,"/")) { if( preg_match("/^\d*$/",substr($InPut, 0, $pos)) && preg_match("/^\d*$/",substr($InPut, $pos+1, strlen($InPut)-1)) ){ $num1=vsprintf("%d",substr($InPut, 0, $pos)); $num2=vsprintf("%d",substr($InPut, $pos+1, strlen($InPut)-1)); $Cal->div($num1,$num2); } else { echo "Wrong InPut"; }}?>
BLOG
阅读全文
0 0
- 第三周 PHP面向对象
- C++面向对象第三周笔记<Boolan>
- php面向对象视频笔记之第三章(面向对象类特性)
- 第三章 面向对象
- 面向对象 第三课
- 第三章 面向对象
- 【面向对象】php面向对象
- php面向对象--php面向对象ppt
- Android学习第三周-关于面向对象和创建对象
- 第三讲 面向对象(上)
- 第三层---面向对象原则
- 浅谈面向对象第三枪
- 面向对象第三章 多态
- PHP面向对象精要
- PHP 面向对象编程
- PHP面向对象编程
- PHP 面向对象技术
- php 面向对象
- 我的自考学习过程
- 初学python:最大值函数max的使用
- cms04---basic-hibernate03--BaseDao测试
- React Router v4
- 放慢速度
- 第三周 PHP面向对象
- 初学python:输出指定范围内的素数,范围由键盘输入
- webpack 3新学习
- 机房---“奇怪”的问题---time被隐藏
- 【Prufer编码+组合】BZOJ1005(HNOI2008)[明明的烦恼]题解
- Java8 Lamdba 在Android Studio 使用
- muduo网络库学习(九)日志类Logger和LogStream,将日志信息打印到屏幕
- Python数据迭代
- 基于DR模式的LVS