构造函数、访问权限private

一、构造函数

具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。如果子类中定义了构造函数则不会隐式调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用parent::__construct()。如果子类没有定义构造函数则会如同一个普通的类方法一样从父类继承(假如没有被定义为 private 的话)。

二、访问权限private

父类private属性不会被子类继承。同样。父类private方法也不会被子类继承

三、对多态的理解

对象调用方法时,程序会到内存当中的代码区寻找同名方法,当存在多个同名方法时程序能够分辨调用哪一个方法。

<?php
	class animal {
		private $age = 20;
		protected $name;
		protected $sex = '公';
		
		public function __construct($name) {  // 子类没有定义构造函数时自动调用父类构造函数,子类有定义构造函数时则不会自动调用父类构造函数。
			$this->name = $name;		
		}
		
		
		public function call() {		//多态:对象调用方法时,程序会到内存当中的代码区寻找同名方法,当存在多个同名方法时程序能够分辨调用哪一个方法。
		}
	}
	
	class dog extends animal {
	
	
		public function call() {
			echo '小狗 名字: ' . $this->name . ' 性别:' . $this->sex;
			echo '
'; } } class cat extends animal { public function call() { echo '小猫 名字: ' . $this->name. ' 性别:' . $this->sex; echo '年龄:' . $this ->$age; //输出年龄报错,Notice: Undefined variable: age } //private属性不会被子类继承 } $d = new dog('Jack'); $c = new cat('Tom'); $array = array($d, $c); foreach($array as $e) $e->call(); ?>
输出结果为:

小狗 名字: Jack 性别:公
小猫 名字: Tom 性别:公
Notice: Undefined variable: age in F:\xampp\webRoots\object\extendsTest.php on line 29

Fatal error: Cannot access empty property in F:\xampp\webRoots\object\extendsTest.php on line 29

阅读更多
文章标签: 构造函数 private
个人分类: PHP学习笔记
想对作者说点什么? 我来说一句

php面向对象-继承

2015年02月02日 1.56MB 下载

没有更多推荐了,返回首页

不良信息举报

构造函数、访问权限private

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭