一、抽象类与抽象方法

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面向对象(抽象类与抽象方法、接口的实现)的更多相关文章

  1. PHP 面向对象编程和设计模式 (1/5) - 抽象类、对象接口、instanceof 和契约式编程

    PHP高级程序设计 学习笔记 2014.06.09 什么是面向对象编程 面向对象编程(Object Oriented Programming,OOP)是一种计算机编程架构.OOP 的一条基本原则是计算 ...

  2. python面向对象 : 抽象类(接口类),多态,封装(私有制封装)

    一. 抽象类(接口类) 与java一样, python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类, 它的特殊之处在于只能被继承, 不能被实例化. 从设计角度去看, 如果类是从现实对 ...

  3. php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

    1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...

  4. java面向对象3-继承(继承、抽象类、抽象接口)

    4.继承 面向对象概念-类与对象的关系 封装:指隐藏对象的属性和实现细节,仅对外提供公共访问方式,private-构造方法/构造器-this关键字-static关键字(javadoc制作工具类) -代 ...

  5. java抽象类、抽象方法、接口、实现接口详解

    对于java中的抽象类,抽象方法,接口,实现接口等具体的概念就不在这里详细的说明了,网上书本都有很多解释,主要是我懒,下面通过一个例子来说明其中的精髓要点,能不能练成绝世武功,踏上封王之路,就看自己的 ...

  6. java 面向对象抽象类和接口

    1.abstract:可以修饰类和方法,被abstract修饰过的称为抽象类和抽象方法. 抽象类: 除了不可以创建对象, 其他和普通类一致. 可以有成员方法.静态方法和构造方法(提供给子类调用)等. ...

  7. PHP的抽象类和抽象方法以及接口总结

    PHP中的抽象类和抽象方法自己用的不多,但是经常会在项目中看到别人使用,同样,今天在看别人的代码的时候,发现使用了抽象类,就总结下: 抽象类:1.如果一个类中有一个方法是抽象方法,则这个类就是抽象类: ...

  8. C# 抽象方法及抽象类 Abstract 及接口

    public abstract class Animal { public abstract void Dosth(); } 该类中只有虚方法  那么我们可以用abstract来修饰  将该类称为抽象 ...

  9. Java面向对象---抽象类与接口

    final关键字 1.final关键字在java中被称为完结器,表示最终的意思: 2.final能声明类.方法.属性: 3.使用final声明的类不能被继承,使用final声明的方法不能被重写,使用f ...

随机推荐

  1. Could not determine own NN ID in namespace 'mycluster'

    执行hdfs namenode -bootstrapStandby的时候报错如下 19/03/24 18:00:48 ERROR namenode.NameNode: Failed to start ...

  2. SCCM2012 R2实战系列之五:发现方法

    打开SCCM2012的控制台 点击左侧栏的“管理”选项,然后展开“层次结构配置”,点击“发现方法”来配置客户端发现. 勾选“启用Active Directory林发现”.“发现Active Direc ...

  3. POI实现数据导入功能

    一.导入过程(基本就是导出的逆向过程) 1.存在一个包含数据的Excel文件 2.将文件作为参数传到服务器 3.服务器解析文件,并将数据封装成实体对象 4.将对象持久化更新到数据库 5.刷新页面导入成 ...

  4. 第16课 右值引用(3)_std::forward与完美转发

    1. std::forward原型 template <typename T> T&& forward(typename std::remove_reference< ...

  5. 第11章 拾遗4:IPv6(2)_给计算机配置IPv6地址

    4. 给计算机配置IPv6地址 4.1 无状态自动配置IPv6地址 (1)网络拓扑 ①无状态地址自动配置是指不需要DHCP服务器进行管理,由客户端向路由器发送前缀请求(RS)询问其所在网段.路由器收到 ...

  6. js第四天学习小结:

    (1)函数的四种形式小结: 无参无返回值 function tellstory(){     console.log("从前有座山");     console.log(" ...

  7. Java - 27 Java 集合框架

    Java 集合框架 早在Java 2中之前,Java就提供了特设类.比如:Dictionary, Vector, Stack, 和Properties这些类用来存储和操作对象组. 虽然这些类都非常有用 ...

  8. JS静态变量和函数、实例变量和函数以及prototype 说明

    静态变量.函数 当定义一个函数后通过 “.”为其添加的属性和函数,通过对象本身仍然可以访问得到,但是其实例却访问不到,这样的变量和函数分别被称为静态变量和静态函数,用过Java.C#的同学很好理解静态 ...

  9. ajax事件执行顺序

    1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success(请求成功时调用) 5.ajaxSuccess(全局事件) 6.error 7.aja ...

  10. Redis 简介(官方翻译)

    Redis是一个开源(基于BSD开源协议).内存型结构数据存储,可当做数据库.缓存.消息代理.它支持的数据结构有字符串.哈希表.列表.集合.可随机查询的有序集合.位图.基数统计.用于半径查询的地理位置 ...