PHP面向对象(抽象类与抽象方法、接口的实现)
一、抽象类与抽象方法
1,任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。
2,定义为抽象的类不能被实例化。
3, 被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
4,必须在子类中将抽象类的全部抽象方法全部实现才可以
<?php
// 任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。
abstract class Person // 定义为抽象的类不能被实例化。
{
public $name;
public function __construct($name)
{
$this->name = $name;
}
// 被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
abstract protected function hello();
abstract protected function say();
public function show()
{
return "我的名字:".$this->name;
}
}
class Worker extends Person
{
// 必须在子类中将抽象类的全部抽象方法全部实现才可以
public function hello()
{
return 'Hello '.$this->name;
}
public function say()
{
return 'Say '.$this->name;
}
}
$worder = new Worker('小明');
echo $worder->hello(); // Hello 小明
echo '<hr>';
echo $worder->say(); // Say 小明
echo '<hr>';
echo $worder->show(); // 我的名字:小明
?>
?>
二、接口的实现
使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
接口中定义的属性是类常量,定义的所有方法都必须是公有的抽象方法,所以public 、abstract 可不写,这是接口的特性。
<?php
interface Person1
{
// 接口中定义的属性必须是:类常量
const SITENAME = '我在学习PHP';
// 接口中定义的所有方法都必须是公有的抽象方法,所以public 、abstract 可不写
function show();
function do();
}
interface Person2
{
function hello();
}
// 接口不允许实例化,但可以被继承,创建一个类继承接口并实现所有的抽象方法
class Worker implements Person1,Person2
{
public function show()
{
return self::SITENAME;
}
public function do()
{
return '我在写代码~~';
}
public function hello()
{
return 'PHP是非常好的一种语言~~';
}
}
$worker = new Worker();
echo $worker->show(); // 我在学习PHP
echo '<hr>';
echo $worker->do(); // 我在写代码~~
echo '<hr>';
echo $worker->hello(); // PHP是非常好的一种语言~~
?>
PHP面向对象(抽象类与抽象方法、接口的实现)的更多相关文章
- PHP 面向对象编程和设计模式 (1/5) - 抽象类、对象接口、instanceof 和契约式编程
PHP高级程序设计 学习笔记 2014.06.09 什么是面向对象编程 面向对象编程(Object Oriented Programming,OOP)是一种计算机编程架构.OOP 的一条基本原则是计算 ...
- python面向对象 : 抽象类(接口类),多态,封装(私有制封装)
一. 抽象类(接口类) 与java一样, python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类, 它的特殊之处在于只能被继承, 不能被实例化. 从设计角度去看, 如果类是从现实对 ...
- php面向对象 封装继承多态 接口、重载、抽象类、最终类总结
1.面向对象 封装继承多态 接口.重载.抽象类.最终类 面向对象 封装继承多态 首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...
- java面向对象3-继承(继承、抽象类、抽象接口)
4.继承 面向对象概念-类与对象的关系 封装:指隐藏对象的属性和实现细节,仅对外提供公共访问方式,private-构造方法/构造器-this关键字-static关键字(javadoc制作工具类) -代 ...
- java抽象类、抽象方法、接口、实现接口详解
对于java中的抽象类,抽象方法,接口,实现接口等具体的概念就不在这里详细的说明了,网上书本都有很多解释,主要是我懒,下面通过一个例子来说明其中的精髓要点,能不能练成绝世武功,踏上封王之路,就看自己的 ...
- java 面向对象抽象类和接口
1.abstract:可以修饰类和方法,被abstract修饰过的称为抽象类和抽象方法. 抽象类: 除了不可以创建对象, 其他和普通类一致. 可以有成员方法.静态方法和构造方法(提供给子类调用)等. ...
- PHP的抽象类和抽象方法以及接口总结
PHP中的抽象类和抽象方法自己用的不多,但是经常会在项目中看到别人使用,同样,今天在看别人的代码的时候,发现使用了抽象类,就总结下: 抽象类:1.如果一个类中有一个方法是抽象方法,则这个类就是抽象类: ...
- C# 抽象方法及抽象类 Abstract 及接口
public abstract class Animal { public abstract void Dosth(); } 该类中只有虚方法 那么我们可以用abstract来修饰 将该类称为抽象 ...
- Java面向对象---抽象类与接口
final关键字 1.final关键字在java中被称为完结器,表示最终的意思: 2.final能声明类.方法.属性: 3.使用final声明的类不能被继承,使用final声明的方法不能被重写,使用f ...
随机推荐
- 为帮助保护你的安全,您的Web浏览器已经限制此文件显示可能访问您的计算机的活动内容
在开发时,会遇到是要HTML来做UI,是要js与C++进行交互. 在加载完页面后,一些电脑中会出现“为帮助保护你的安全,您的Web浏览器已经限制此文件显示可能访问您的计算机的活动内容”(用IE打开,自 ...
- 关于Element UI中页面样式小问题
一,修改组件dialog窗口的大小 二,在我使用upload组件上传一张美女图片时,发现当预览图片时,图片是灰色的,点击一下才会变亮,这种效果使我很不舒服,于是我通过添加下面的一条样式,问题解决了(可 ...
- java正则表达式替换空格和换行符
public class StringUtil { public static String getStringNoBlank(String str) { if(s ...
- WPF简单数据绑定
XAML: <!--#region 数据绑定控件--> <DataGrid x:Name="dataGrid" Grid.Column="2" ...
- linux中ps命令
ps的参数 -C的使用 [root@centos7 ~]# ps -C nginx -o user,pid,comm USER PID COMMAND root 2697 nginx nginx 26 ...
- Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建
Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...
- uva-704-暴力枚举-双向bfs
题意:俩个转盘,24个数字,每个转盘都可以顺时针,逆时针旋转.终点固定. 问:给定一个起点,能不能在16步内转到终点 解法:双向bfs,终点走8步,起点走8步,判断从起点生成的状态是否在终点里面,如果 ...
- 键值对操作 之 combineByKey
combineByKey( createCombiner,mergeValue,mergeCombiners,partitioner) combineByKey() 是最为常用的基于键进行聚合的函数. ...
- 如何解决Android帧动画出现的内存溢出
这几天在做动画的时候,遇到了一个OOM的问题,特此记录下来. 普通实现 实现一个帧动画,最先想到的就是用animation-list将全部图片按顺序放入,并设置时间间隔和播放模式.然后将该drawab ...
- Flex4学习笔记 checkBox RadioButton DropDownList colorPicker
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...