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 ...
随机推荐
- androidstudio在创建new project时,窗口太大,看不到下面确定按钮的解决方法
点击File-->setting-->Appearance将里面的Override default fonts by(not recommended)打钩去掉. 这个是目前找到唯一办法.
- strut2的核心知识和工作原理
http://blog.csdn.net/laner0515/article/details/27692673/ 写的很详细
- (转)SQL知识_SQL Case when 的使用方法
原文地址:http://www.cnblogs.com/yazdao/archive/2009/12/09/1620482.html Case具有两种格式.简单Case函数和Case搜索函数. --简 ...
- WebView加载失败或网络异常时,替换WebView的错误界面;
WebView在加载失败时会显示一个失败原因的界面,各个手机显示的界面还都不一样,部分手机还会把Url显示出来:我们要做的就是统一加载失败的界面: 大概思路:在WebView这个控件上面再覆盖一个Vi ...
- HTML5和CSS3的一些学习记录
1.引述块级文本的标签(blockquote): <blockquote cite="http://www.marktwainbooks.edu/"> <p> ...
- Codeforces Round #492 (Div. 2)
A. /* 从大往小依次除 */ #include<cstdio> #include<algorithm> #include<cstring> #include&l ...
- kotlin的安装(一)
1.下载Kotlin Compiler Kotlin 命令行环境主要依赖就是Kotlin Compiler,目前最新版本是 1.1.2-2.其下载链接是:https://github.com/JetB ...
- Spring 配置 Annotation <context:annotation-config> 和 <context:component-scan>标签的诠释及区别
Spring 开启Annotation <context:annotation-config> 和 <context:component-scan>诠释及区别 <cont ...
- 安全测试2_Web前端知识学习
上次讲到安全的简介,这次就来简单的学习下基本的前端知识(html.js.css(不作讲解),牛逼的请忽略!!! 1.Html简单概述: Html和Html DOM 2.Html字符实体(借用别人的,详 ...
- 用Excel建模进行决策树分析
决策树(Decision Tree)在机器学习中也是比较常见的一种算法,最早的决策树算法是ID3,改善后得到了C4.5算法,进一步改进后形成了我们现在使用的C5.0算法,综合性能大幅提高. 算法核心: ...