OOP的第二大特性--继承性

  1,类继承的应用

  子类继承父类,拥有父类的属性和方法.

  代码:

 1 <?php
 2 header("Content-Type:text/html;charset=utf-8");
 3
 4 //声明一个人类
 5
 6 class Person
 7 {
 8     //属性
 9     public $sex;
10     public $name;
11     public $age;
12     public $height;
13     //方法
14     public function eat()
15     {
16         echo "我会吃!<br>";
17     }
18
19     public function sleep()
20     {
21         echo "我能睡!<br>";
22     }
23 }
24
25 //男人类
26 class Man
27 {
28     //属性
29     public $name;
30     public $age;
31     public $sex = ‘男‘;
32     public $height;
33     public $hou;
34
35     //方法
36     public function eat()
37     {
38         echo "我会吃!<br>";
39     }
40
41     public function sleep()
42     {
43         echo "我能睡!<br>";
44     }
45
46     public function peeStand()
47     {
48         echo "我会站着尿尿<br>";
49     }
50 }
51
52 //定一个超级英雄类
53 class SuperMan
54 {
55     //属性
56     public $name;
57     public $age;
58     public $sex = ‘男‘;
59     public $height;
60     public $hou;
61     public $energy;
62
63     //方法
64     public function eat()
65     {
66         echo "我会吃!<br>";
67     }
68
69     public function sleep()
70     {
71         echo "我能睡!<br>";
72     }
73
74     public function peeStand()
75     {
76         echo "我会站着尿尿<br>";
77     }
78
79     public function fly()
80     {
81         echo "我会飞翔!<br>";
82     }
83 }

  格式:
        class 子类名 extends 父类名
        {
            code...
        }
     特点:
            ① 一个父类(基类)可以被多个子类继承
            ② 一个子类不能同时继承多个父类

  

 2、继承的访问控制

位置 public protected private
在类的外部 Y N N
在子类的内部 Y Y N
在类的内部 Y Y Y

  

     代码: 

<?php
header("Content-Type:text/html;charset=utf-8");
//子类重写父类属性
class User
{
    public $name = "马克思";
    protected $age = 40;
    private $money = "一百亿元";

    protected function getInfo()
    {
        echo "这是父类的get<br>";
        echo "name:".$this->name."|age:".$this->age."|money:".$this->money."<br>";
    }
}
class VipUser extends User
{
    public $name = "乔布斯";
    //protected $name = "乔布斯";

    //public $age = 50;
    protected $age = 50;

    public $money = ‘一块钱‘;

    public function demo()
    {
        echo "在子类的内部访问父类的public属性:".$this->name."<br>";
        echo "在子类的内部访问父类的protected属性:".$this->age."<br>";
        echo "在子类的内部访问父类的private属性:".$this->money."<br>";
    }

    public function getInfo()
    {
        echo "这是子类的get<br>";
        echo "name:".$this->name."|age:".$this->age."|money:".$this->money."<br>";
    }
}
echo "<pre>";
//实例化
$user = new User();
$vip = new VipUser();
$vip->getInfo();
echo "<hr>";
var_dump($user);
var_dump($vip);

  输出结果:

  

  3、子类中重写父类方法
        ① 子类中可以重写父类的属性和方法
        ② 子类重写非私有方法和属性时 只能更加开放 level更低
        ③ 重载父类方法 parent::父类方法名()

  代码:

  

<?php
header("Content-Type:text/html;charset=utf-8");
//子类重写父类属性
class User
{
    public $name = "马克思";
    protected $age = 40;
    private $money = "十一亿";

    public function __construct($name,$age)
    {
        $this->name=$name;
        $this->age = $age;
    }
    public function getInfo()
    {
        echo "这是父类的get<get>";;
        echo "name".$this->name."|age:".$this->age."|money:".$this->money."<br>";
    }
    public function demo()
    {
        echo "父demo <br>";
    }
}
class VipUser extends User
{
    public $home;
    private $money;

    public function __construct($name,$age,$home)
    {
        parent::__construct($name,$age);
        $this->home = $home;
    }

    public function getInfo()
    {
        echo "这是子类的get<br>";
        echo "name:".$this->name."|age".$this->age."|money:".$this->money."<br>";
    }

    public function demo()
    {
        parent::demo();
        echo "FUNK!!!!";
    }
}

echo "<pre>";
//实例化
$user = new User(‘张三‘,10);
$vip = new VipUser(‘李四‘,‘11‘,‘新疆‘);
var_dump($user);
var_dump($vip);
$user->getInfo();
$vip->getInfo();
$vip->demo();

  

  输出结果:

  

时间: 2024-10-03 14:02:19

OOP的第二大特性--继承性的相关文章

CSS(4)---三大特性(继承性,层叠性,优先级)

CSS(4)---三大特性(继承性,层叠性,优先级) CSS有三大特性分别是: 继承性,层叠性,优先级. 一.继承性 概念 给父元素设置一些属性,子元素也可以使用,这个我们就称之为继承性. 注意 1.并不是所有的属性都可以继承, 只有以color/font-/text-/line-开头的属性才可以继承 2.在CSS的继承中不仅仅是儿子可以继承, 只要是后代都可以继承 3.继承性中的特殊性 3.1 a标签的文字颜色和下划线是不能继承的 3.2 h标签的文字大小是不能继承的 示例 <!-- 样式部分

《微服务》九大特性重读笔记

http://blog.didispace.com/20160917-microservices-note/ 今天重读了Martin Fowler的<Microservices>,在此记录一下对九大特性的理解. 服务组件化 组件,是一个可以独立更换和升级的单元.就像PC中的CPU.内存.显卡.硬盘一样,独立且可以更换升级而不影响其他单元. 在"微服务"架构中,需要我们对服务进行组件化分解.服务,是一种进程外的组件,它通过http等通信协议进行协作,而不是传统组件以嵌入的方式

网络安全的未来——WAF应当具备的十大特性

概述 据Forrester统计,2013年有超过半数的企业的Web应用被泄露,其中不少因此遭到严重的财务损失.近年来,企业安全事件屡见报端:2011年,多家公司和政府网站被黑客攻击;2012年的DDoS攻击令众多美国银行网站瘫痪;更不用提那些造成数百万用户信用卡信息泄露的网络安全事故了.传统的网络安全防护体系已无法招架如今的黑客们了. 今天,网络罪犯已不仅仅把目光锁定在知名大公司上,每一个存在漏洞的网站都可能成为被攻击的目标.黑客们的攻击方式一般可以分为以下三种:技术性Web攻击.业务逻辑处理攻

前端开发者不得不知的ES6十大特性

前端开发者不得不知的ES6十大特性 转载 作者:AlloyTeam 链接:http://www.alloyteam.com/2016/03/es6-front-end-developers-will-have-to-know-the-top-ten-properties/ ES6(ECMAScript2015)的出现,无疑给前端开发人员带来了新的惊喜,它包含了一些很棒的新特性,可以更加方便的实现很多复杂的操作,提高开发人员的效率. 本文主要针对ES6做一个简要介绍. 主要译自:  http://

Django查询集QuerySet及两大特性

1 概念 Django的ORM中存在查询集的概念. 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合. 当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): all():返回所有数据. filter():返回满足条件的数据. exclude():返回满足条件之外的数据. order_by():对结果进行排序. 也就意味着查询集可以含有零个.一个或多个过滤器.过滤器基于所给的参数限制查询的结果. 从SQL的角度讲,查询集与select语句等价,过滤器像whe

第二大整数

第二大整数 问题描述 编写一个程序,读入一组整数(不超过20个),当用户输入0时,表示输入结束.然后程序将从这组整数中,把第二大的那个整数找出来,并把它打印出来.说明:(1)0表示输入结束,它本身并不计入这组整数中.(2)在这组整数中,既有正数,也可能有负数.(3)这组整数的个数不少于2个. 输入格式:输入只有一行,包括若干个整数,中间用空格隔开,最后一个整数为0. 输出格式:输出第二大的那个整数. 输入输出样例 样例输入 5 8 -12 7 0 样例输出 7 #include <stdio.h

面试算法题:16个数,最多用20次比较,找出第二大的数?

这道题最笨的方法就是先从16个数中选出最大的数,然后再从剩下的15个数中选出最大数就可得到答案,因此,需要15+14=29次比较. 既然这道题要求在20次比较之内就能找出第二大的数,那我们就想能简单的方法. 假设16个数中最大的是A,第二大的是B. 首先将16个数两两进行比较,较大者胜出,然后再在胜出者中进行两两比较,按此方法,最后选出最大数A,如下所示 红色路线是最大数经过的路径. 接下来分析B可能存在的位置. 将16个数分为左部分和右部分各8位: 1.如果A和B在两个不同的部分(A在左部分,

算法:寻找数组的第二大的元素(不排序、只循环一次)

该算法的原理是,在遍历数组的时,始终记录当前最大的元素和第二大的元素.示例代码: package demo01 import ( "fmt" ) func NumberTestBase() { fmt.Println("This is NumberTestBase") nums := []int{12, 24, 2, 5, 13, 8, 7} fmt.Println("nums:", nums) secondMax := getSecondMax

C语言 &#183; 第二大整数

算法提高 第二大整数 时间限制:1.0s   内存限制:512.0MB 问题描述 编写一个程序,读入一组整数(不超过20个),当用户输入0时,表示输入结束.然后程序将从这组整数中,把第二大的那个整数找出来,并把它打印出来.说明:(1)0表示输入结束,它本身并不计入这组整数中.(2)在这组整数中,既有正数,也可能有负数.(3)这组整数的个数不少于2个. 输入格式:输入只有一行,包括若干个整数,中间用空格隔开,最后一个整数为0. 输出格式:输出第二大的那个整数. 输入输出样例 样例输入 5 8 -1