PHP面向对象之抽象

<?php
//PHP 抽象类 接口

/**
* @author bin
* date:14 / 6 / 8
*
*/
//接口
interface
Animal{
//public $name; 不允许
//public static $name; 不允许
const AGE =
100;//可以定义常量
public function voice();
public function
showColor();
}

interface Water{
public function showInfo();
}
class Dog_bobo
implements Animal,Water{
public function
__construct(){
self::showColor();
self::voice();
self::showInfo();
}
public
function showInfo(){
echo "<br>喝水不忘挖井人<br>";
}
public
function voice(){
echo "我的叫声是 汪汪汪~~~~";
}
public function
showColor(){
echo "我是一条黑色的狗";
}
}

class Cat_bobo implements Animal{
public function
__construct(){
self::showColor();
self::voice();
}
public
function voice(){
echo "我的叫声是 喵喵喵~~~~";
}
public function
showColor(){
echo "我是一条黑色的猫";
}
}
$dog = new Dog_bobo();
$Cat
= new Cat_bobo();

//实际上 抽象类 面向对象的重要思想,其实对多态的最好支持;
//接口中不能有非抽象的方法
//接口的方法 成员变量不能用private
修饰
// 抽象类 多态的表现
/* abstract class Person{
public
$name;
//加abstract 就可以不用写方法体
// 抽象类里定义的方法 它子类都必须重写定义的方法
abstract
protected function showName();//不能用private 修饰
//public function
yy();这是错误的
public function yy(){
echo
"抽象类也可以写非抽象方法";
}
//非抽象方法一定要写方法体

}
Person::yy();//无需实例化
直接这么调用。
class Jay extends Person{
public function showName(){
echo
"<br>我的名字叫做周杰伦<br>";
}
}

class Jolin extends Person{
//如果不重写showName
//Class Jolin contains 1
abstract method and must therefore be declared abstract or implement the
remaining methods (Person::showName)
public function showName(){
echo
"<br>我的名字叫做蔡依林<br>";
}
}

//$person = new Person();
// Fatal error: Cannot instantiate abstract
class Person in D:\wamp\www\php\oop\interface.php on line 33
//抽象类 不允许被实例化

$jay = new Jay();
$jay->showName();
$jolin = new
Jolin();
$jolin->showName(); */
?>

PHP面向对象之抽象,布布扣,bubuko.com

时间: 2024-10-12 16:29:13

PHP面向对象之抽象的相关文章

面向对象---多态-抽象

面向对象编程---抽象: 可以使用 abstract 来修饰一个类或者方法.用 abstract 修饰的类表示这个类是一个抽象类, 用 abstract 修饰的方法表示这个方法是一个抽象方法.抽象类不能被实例化.抽象方法是只有方法声明,而没有方法的实现内容. 可以使用 abstract 来修饰一个类.用 abstract 修饰的类表示这个类是一个抽象类.抽象类不能被实例化. 用 abstract 修饰的类表示这个方法是一个抽象方法.抽象方法,只有方法的声明部分,没有方法体.抽象方法没有 {} ,

黑马程序员——Java基础---面向对象之抽象

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流!-------    面向对象之抽象 抽象类(abstract) (1)只抽取了很多类的方法的声明,为了保证不出问题,方法声明用abstract修饰. (2)抽象类的特点 A:一个类如果有了抽象方法,那么这个类必须是抽象类.抽象类里边可以没有抽象方法. B

面向对象设计——抽象工厂(Abstract Factory)模式

定义 提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类.抽象工厂允许客户使用抽象的接口来创建一组相关的产品,而不需要知道或关心实际产出的具体产品是什么.这样一来,客户就能从具体的产品中被解耦. 适用场景 在以下情况可以使用Abstract Factory模式 一个系统要独立于它的产品的创建.组合和表示时 一个系统要由多个产品系列中的一个来配置时 当你要强调一系列相关的产品对象的设计以便进行联合使用时 当你提供一个产品类库,而只想显示它们的接口而不是实现时 UML图 抽象工厂模

面向对象 继承 抽象接口

子类继承父类,通过在类后面加冒号来继承某个类一旦形成继承关系后,子类的对象就能够使用父类中的公共属性和方法函数子类能够转换成父类,但父类不一定能够转成子类只有当父类对象是由某个子类对象转换来的时候,才能再把父类对象转换回去,从哪个子类来的,就只能再转回那个子类去直接通过父类的构造函数构建的对象, 不能转换为子类对象当子类中重写了跟父类同名同参数的方法之后,通过哪个类的对象点出来的方法,对应就是那个类里面的方法内容 重写的方法,如果在父类中加virtual 在子类中加override之后,当从子类

面向对象基础——抽象

a)抽象类与抽象方法由abstract修饰 b)abstract的使用注意 抽象方法没有方法体 抽象成员只能存在于抽象类中 抽象类可以有非抽象成员(侧重于族群的概念,父类有的,子类可以调用) 抽象类的派生类必须实现抽象方法体 抽象类可以有构造函数(子类new时会调用父类构造函数初始化) 抽象类只能用作基类,无法实例化 抽象类 a)抽象类不能被实例化. b)抽象类存在的意义: 1.抽象类不能被实例化,只能被其他类继承 2.继承抽象类的子类必须把抽象类中的所有抽象成员都重写(实现)(除非子类也是抽象

面向对象程序设计——抽象基类,访问控制与继承,继承中的类作用域,拷贝函数与拷贝控制

一.抽象基类 1)纯虚函数 和普通的虚函数不同,一个纯虚函数无须定义.我们通过在函数体的位置(即在声明语句的分号之前)书写=0就可以将一个虚函数说明为纯虚函数.其中,=0只能出现在类内部的虚函数声明语句处. 值得注意的是,我们也可以为纯虚函数提供定义,不过函数体必须定义在类的外部.也就是说,我们不能在类的内部为一个=0的函数提供函数体. 2)含有纯虚函数的类是抽象基类 含有(或者未经覆盖直接继承)纯虚函数的类是抽象基类.抽象基类负责定义接口,而后续的其他类可以覆盖该接口.我们不能直接创建一个抽象

Java面向对象之抽象与接口

① 抽象类 抽象的基本概念 使用abstract关键字可以声明一个抽象类,该关键字可以出现在类声明时class关键字前的任何地方. 将父类声明为抽象后,仅有的改变是我们不能再实例化一个父类对象,其他的所有保持不变. 抽象类与普通类的区别 抽象类里边可以有抽象方法和普通方法,但是普通类里边只能有普通方法. 将父类声明为抽象后,不能再实例化父类对象,普通类无影响. 普通类子类继承父类,如果父类是抽象类且有抽象方法,子类必须要重写,如果是普通父类,则没有要求必须重写. 抽象类的特点 在类的前面加上ab

基于面向对象(抽象数据类型)风格的kwic实现

ObjectOrientedMain类 /**  *   */ package com.jason.kwic.objectOriented; import java.io.IOException; /**  * @author jasonzhang  *  */ public class ObjectOrientedMain { public static void main(String[] args) throws IOException { Output output = new Outp

1Python廖--面向对象编程

面向对象编程 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度. 而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列