文档章节

PHP面向对象之继承和多态

wddqing
 wddqing
发布于 2013/04/28 19:18
字数 345
阅读 159
收藏 7

关于PHP面向对象的一点理解,记录一下。

1、组合和继承

     继承会将父类的代码全部继承下来,组合仅仅将外部可调用的变量和方法进行组装,代码量会减少很多,但是无法使用protected的变量和方法。底层代码多用组合,顶层或者业务层多用继承。

class person{
	public $name = 'Tom';
	public $gender;
	static $money = 10000;
	public function __construct(){
		echo 'This is father!', PHP_EOL;
	}
	public function say(){
		echo $this->name,' is ',$this->gender, PHP_EOL;
	}
}

class family extends person{//继承
	public $name;
	public $gender;
	public $age;
	static $money = 10000;
	public function __construct(){
        	parent::__construct();
		echo "This is son!", PHP_EOL;
	}
	public function say(){
		parent::say();
		echo $this->name,' is ',$this->gender,' and is ',$this->age, PHP_EOL;
	}
	public function cry(){
		echo parent::$money, PHP_EOL;
		echo self::$money, PHP_EOL;
	}
}
class family_another{//组合
       public $name;
       public $gender;
       public $person;
       function __construct(){
           $this->person = new car;
           $this->name = $this->person->name;
           $this->gender = $this->person->gender;
       }
       function say(){
           $this->person->say();
         }
}
$poor = new family();
$poor->name = 'Lee';
$poor->gender = 'female';
$poor->age = 25;
$poor->say();
$poor->cry();
$poor_another = new family_another();
$poor_another->say();

2、多态

    多态性指一种通过多种状态或阶段描述相同对象的编程方式。在实际开发中,只要关心一个接口或基类的编程,而不必关心一个对象所属的具体类。

interface employee{
	public function working();
}
class teacher implements employee{
	public function working(){
		echo 'teaching',PHP_EOL;
	}
}
class coder implements employee{
	public function working(){
		echo 'coding',PHP_EOL;
	}
}
function print_object(employee $i){
	$i->working();
}
$a = new teacher();
$b = new coder();
print_object($a);
print_object($b);

© 著作权归作者所有

wddqing
粉丝 10
博文 25
码字总数 10891
作品 0
广州
程序员
私信 提问
加载中

评论(2)

wddqing
wddqing 博主

引用来自“邓攀”的评论

print_object($a); 这个函数 貌似php5就没有了吧

那个是自定义函数

哈哈__哈哈
哈哈__哈哈
print_object($a); 这个函数 貌似php5就没有了吧
php面向对象三大特性

1.封装: 目的:使类更加安全 步骤: 1、成员变量变成private(私有的) 2、设置方法/调用方法 3、在方法中增加限制 aa = $v; } public function get_aa() { return $this->aa;//给aa一个返回...

IDC_之家
2017/02/14
0
0
【原】PHP从入门到精通2小时【图文并茂】

原创内容,转载请注明。 主要内容: 搭建PHP开发环境 第一个helloworld程序 变量 全局变量 循环结构 函数 数组 面向对象编程 继承 接口 多态 日志 文件的读写 时间格式和时区 创建图形 从远程...

乌云上
2018/09/16
0
0
PHP核心技术与最佳实践 读书笔记 第一章面向对象思想的核心概念

第一章 面向对象思想的核心概念 面向对象程序设计是一种程序设计范型,同时也是一种程序开发方法。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性,灵活性和可扩展性...

lilugirl
2013/06/08
270
0
php interface和api的区别?

这两者没有什么字面的直接关系,interface我们在大型项目开发中使用,用于约束团队协作的,这是在OOP面向对象中常用的,面向对象中的类有三个特性,封装,继承,多态,所以类的范围比较广,比...

slagga
2016/09/14
89
0
谈谈你对面向对象的理解

Question:请你谈一下面向对象? Answer: 面向对象是相对于面向过程而言的。面向过程语言是一种基于功能分析的、以算法为中心的程序设计方法;而面向对象是一种基于结构分析的、以数据为中心...

DevShaw
2016/01/12
743
0

没有更多内容

加载失败,请刷新页面

加载更多

Redis集群搭建

服务器资源 ip 账号 配置 操作系统 xxx.70 root/xxx 磁盘50G(/)+150G(/home)、内存16G、CPU 16core CentOS Linux release 7.2.1511 (Core) xxx.74 root/xxx 磁盘50G(/)+150G(/home)、......

jxlgzwh
29分钟前
4
0
avro

一、 ```我们已经接触过很多序列化框架(或者集成系统),比如protobuf、hessian、thrift等,它们各有优缺点以及各自的实用场景,Avro也是一个序列化框架,它的设计思想、编程模式都和thi...

hexiaoming123
31分钟前
5
0
QML TextInput的字体超出控件范围

本文链接:https://blog.csdn.net/chyuanrufeng/article/details/54691998 问题描述 :QML TextInput输入内容超过TextInput的大小 当输入过多的字符串时,会出现内容超过TextInput的大小,字...

shzwork
32分钟前
4
0
《Java 8 in Action》Chapter 10:用Optional取代null

1965年,英国一位名为Tony Hoare的计算机科学家在设计ALGOL W语言时提出了null引用的想法。ALGOL W是第一批在堆上分配记录的类型语言之一。Hoare选择null引用这种方式,“只是因为这种方法实...

HelloDeveloper
33分钟前
4
0
进击的 Java ,云原生时代的蜕变

作者| 易立 阿里云资深技术专家<br /> <br />导读:云原生时代的来临,与Java 开发者到底有什么联系?有人说,云原生压根不是为了 Java 存在的。然而,本文的作者却认为云原生时代,Java 依然...

阿里巴巴云原生
36分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部