类 讲继承,撇不开类,类一直是OOP中一非常重要的概念,在这个过度OOP的时代中,什么都得抽象成类,好像不抽象类就不会写代码了。所谓类,即一系列对象的总和,这系列对象有一样的属性和一样的方法。所谓方法,就是对象可以操作的行为:如可以吃、可以睡、可

讲继承,撇不开类,类一直是OOP中一非常重要的概念,在这个过度OOP的时代中,什么都得抽象成类,好像不抽象类就不会写代码了。所谓类,即一系列对象的总和,这系列对象有一样的属性和一样的方法。所谓方法,就是对象可以操作的行为:如可以吃、可以睡、可以计算等等。
<?php
class Animal {
public $weight = 0;
public function eat() { echo "it's eating!"; }
private function sleep(){ echo "it's sleeping!"; }
}
$a = new Animal; // 或 new Animal();
$a->weight = 20;
$a->eat();
?>
这里表达的是一个简单的动物类,它有属性“体重”,有方法“吃”,“睡”。这些属性和方法,是类内部可见,还是类内部也可见。就有 是外表上显而易见的,如手、脚、嘴、吃东西等,这些就是所谓public和private关键字。public的;还有些外表上看不出来的,如心、肝、脾、心跳、消化等,这些就是所谓private和protected。至于,private和protected啥不一样,后面会讲。(modified 2014-5-1)
我们可以按以下操作来实例化一个对象
<?php $a = new Animal; // 或 new Animal(); $a->weight = 20; ?>
但如果weight只可以内部访问或者想简化操作呢?那牛人又设计了构造函数__construct,这是一个特殊名字的方法。
立即学习“PHP免费学习笔记(深入)”;
<?php
class Animal {
private $weight = 0;
public function($weight) {
$this->weight = $weight;
}
public function eat() { echo "it's eating!"; }
private function sleep(){ echo "it's sleeping!"; }
}
$a = new Animal(20);
?>
有了类以后,在类与类之间找关系,继承就是一个明显的关系。所谓继承,不是简单的生物学中的基因继承,也不是经济学中的财产继承。它只是表达了一个概念,你有的我也有,你没有的我也有。与其说是继承,不如说是扩展。包括PHP在内的许多语言,都选择关键字extends就是想很清楚地表达了这个概念它。派生关系可以用家族树来表达,确实就像继承。(modified 2014-5-1)
<?php
class People extends Animal { // 类也是动物
protected $IQ = 0;
public function think() {echo "it's thinking!";}
}
?>
以上表达的就是人是继承了动物的方法“吃”,“睡”。但人不只“吃睡”,还会“思考”,所以还有智商“IQ”。那有些属性、方法不想被类外部访问,又想被继承它的类访问怎么办,好吧,再搞个 好吧,既然是继承,那我们来研究一下达尔文的进化和退化论。派生类于基类,多了新的属性或新的方法,即是进步;少了在基类中声明为protected关键字好了。private的属性和方法,即为退化。(modified 2014-5-1)
2010-10-31日最新更正: 一、更正了产品及文章无限分类不能显示继承类别的bug. 二、更正了产品名称标题过长导致页面布局错位的bug. 随缘企业网站管理系统(无限级分类红色版)简介: 一、全站采用主流DIV+CSS框架布局,宽屏红灰主色调,简洁大方。适合各类行业作为企业站使用。 二、后台可对相关的网站标题,关键词,描述、底部版权信息等进行设置,同时可指定相关的安装目录,可在二级目录使用。
0
好吧,继承并不复杂,以上的public, protected等,我随便写的,没逻辑的。
这节比较抽象,我们来讲故事吧!(modified 2014-5-1)
上帝在造万物时,想造生物,生物有生命会呼吸,然后好抽象,不懂造。(抽象基类,有抽象方法呼吸) 然后,上帝说,我们来造鸟,鸟是生物,有两只脚,有翅膀,会飞,用肺呼吸,羽毛什么颜色?长什么样子?好抽象,不会造。(派生抽象类) 上帝说,好吧,我们来造燕子,燕子是鸟,黑色毛,尾毛像剪刀。然后,捏完上色,好具体。(类) 然后,上帝用抽象到具体的方法,创造世界上最大的操作系统,Hello World!
<?php
abstract class Life {
abstract function breathing();
}
abstract class Bird extends Life {
$foots = array();
$wings = array();
function breathing() { echo "with lump!"; }
abstract function feather();
function fly() { echo "flying!"; }
}
class Swallow Extends Bird () {
$foots = array();
$wings = array();
function breathing() { echo "with lump!"; }
abstract function feather() { echo "black and like a cicor!"}
function fly() { echo "flying!"; }
}
?>
从C/C++时代就想怎么去解释去解释这个静态两个字,这很计算机表达,因为他把变量和方法存在程序的静态区,所以叫静态变量和静态方法。我一直在想这东西在类中表达怎么跟现实中结合,让我们更好地去理解它然后更好地使用它。 OK。想想,有一个People类,关于人类有什么属性和什么操作跟一个人的生命没关系的?人类有多少人,生成身份ID。
<?php
class People extends Animal {
function eat() {echo "we'are eating tasty food!"}
function __construct() {
$this->ID = self::create_id(); // 内部调用静态属性/方法
}
static $populace; // 静态属性,人口
static function() create_id { return microtime(); } // 静态方法,生成身份证
}
echo "Populace: " . People::$populace; // 外部调用静态属性/方法
?>
由于明天还有重要的事,今天只讲到这里,这里只是热身,精彩的内容在后面。
( 完 )
版权所有:老白经 转载请保留来源信息。 >
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号