资讯专栏INFORMATION COLUMN

面向对象的特性:继承性

TwIStOy / 1898人阅读

摘要:一继承与扩展子类使用继承父类,子类可以将父类所有内容继承,如下多层继承无法继承给子类,如下只是子类引用继承了父类的保护权限,只能自己和子类使用,外部无法读取,如下默认公开权限,所有位置都可用,不再重复举例,各权限如下图二继

一、继承与扩展

1.子类使用extends继承父类,子类可以将父类所有内容继承,如下:
    //多层继承
    class Person {
        var $name;
        var $age;
        var $sex;
        function __construct(){
            
        }
        function say(){
            
        }
        function eat(){
            echo "1111";
        }
        function run(){
            
        }
    };
    class Student extends Person {
        var $school;
        function __construct(){
            
        }
        function study(){
            
        }
    };
    class Teacher extends Student {
        var $gz;
        function teach(){
            
        }
    };
    $stu=new Student;
    $stu->eat();
    /1111

2.private无法继承给子类,如下:

    class Person {
        private $name="liu";
        var $age;
        var $sex;
        function __construct(){
            
        }
        function say(){
            echo $this->name;
        }
        function eat(){
            echo "1111";
        }
        function run(){
            
        }
    };
    class Student extends Person {
        var $school;
        function __construct(){
            
        }
        function study(){
            
        }
    };
    class Teacher extends Student {
        var $dw;
        function teach(){
            echo $this->name;
        }
    };
    $teacher=new Teacher;
    $teacher->say();//liu 只是子类引用继承了父类的say()
    $teacher->teach();//error

3.protected保护权限,只能自己和子类使用,外部无法读取,如下:

    class Person {
        private $name="liu";
        protected $age=10;
        var $sex;
        function __construct(){
            
        }
        function say(){
            echo $this->age;
        }
        function eat(){
            echo "1111";
        }
        function run(){
            
        }
    };
    class Student extends Person {
        var $school;
        function __construct(){
            
        }
        function study(){
            
        }
    };
    class Teacher extends Student {
        var $dw;
        function teach(){
            echo $this->age;
        }
    };
    $teacher=new Teacher;
    $teacher->say();//10
    $teacher->teach();//10

4.public(默认)公开权限,所有位置都可用,不再重复举例,各权限如下图:

二、继承中的重载/覆盖

1.强类型语言中重载:方法名相同,参数或参数个数不同
2.弱类型语言理解为覆盖:同一类中同名方法后覆盖前
3.弱类型中的重载:子类里可以写与父类同名的方法,即方法的扩展(接口、多态)
4.调用类的方法Person::say();
5.调用父类(被覆盖)的方法(默认关键字)parent::say();
6.__construct()也可以覆盖,但最开始必须调用父类构造函数,如下:
        function __construct($name,$age,$sex,$school){
            //先调用父类构造方法,否则父类初始化后,子类不变
            parent::__construct($name,$age,$sex);
            $this->school=$school;
        }
7.权限:子类权限只能>=父类权限,即public > protected > private

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25574.html

相关文章

  • 1、面向对象编程

    摘要:利用计算机来对事物进行抽象并使用便是面向对象编程。被继承的类称为基类,继承基类的新类称为导出类。所以可以将导出类的实例对象赋给基类,作为一个基类对象使用。所以在一个基类对象上调用导出类的新功能者并没有什么意义,也不符合现实。 从崛起的智人到被苹果砸中的牛顿再到现在的你,一直在思考这是个怎么样的世界? 一、世上本没有苹果 看到一张苹果的图片,脑海里自然浮现图片上的是一个苹果,为什么会称苹...

    anonymoussf 评论0 收藏0
  • 面向对象概念学习和思考

    摘要:摘要本文章关注点是理解面向对象概念,从抽象的角度上去理解对象,重点包括理解对象的作用,以及理解面向对象的三大特征封装,继承,多态。特性多态不同对象以自己的方式响应相同的消息的能力叫做多态。 摘要:本文章关注点是理解面向对象概念,从抽象的角度上去理解对象,重点包括理解对象的作用,以及理解面向对象的三大特征(封装,继承,多态)。本文重点关注的是理解概念。 在理解面向对象之前,首先回答几个问...

    jzman 评论0 收藏0
  • 面向对象 JavaScript

    摘要:是完全的面向对象语言,它们通过类的形式组织函数和变量,使之不能脱离对象存在。而在基于原型的面向对象方式中,对象则是依靠构造器利用原型构造出来的。 JavaScript 函数式脚本语言特性以及其看似随意的编写风格,导致长期以来人们对这一门语言的误解,即认为 JavaScript 不是一门面向对象的语言,或者只是部分具备一些面向对象的特征。本文将回归面向对象本意,从对语言感悟的角度阐述为什...

    novo 评论0 收藏0
  • 谈谈我所理解面向对象

    摘要:众多面向对象的编程思想虽不尽一致,但是无论哪种面向对象编程语言都具有以下的共通功能。原型编程以类为中心的传统面向对象编程,是以类为基础生成新对象。而原型模式的面向对象编程语言没有类这样一个概念。 什么是面向对象?这个问题往往会问到刚毕业的新手or实习生上,也是往往作为一个技术面试的开头题。在这里我们不去谈如何答(fu)好(yan)问(guo)题(qu),仅谈谈我所理解的面向对象。 从历...

    avwu 评论0 收藏0
  • JavaScript面向对象程序设计

    摘要:目录导语理解对象和面向对象的程序设计创建对象的方式的继承机制原型对象原型链与原型对象相关的方法小结导语前面的系列文章,基本把的核心知识点的基本语法标准库等章节讲解完本章开始进入核心知识点的高级部分面向对象的程序设计,这一部分的内容将会对对象 目录 导语 1.理解对象和面向对象的程序设计 2.创建对象的方式 3.JavaScript的继承机制 3.1 原型对象 3.2 原型链 3.3 与...

    gitmilk 评论0 收藏0
  • 【PHP】面向对象编程

    摘要:封装是面向对象的特征之一,是对象和类概念的主要特性。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。构造函数通常被用来自动执行很多初始化操作。 之前的相关问题 面向对象和面向过程的差别,各自的优缺点 面向对象有哪些基本特性?各自特性带来哪些好处 面向对象的基本语法? 面向对象的基本特性的基本实现 面向对象结合各种设计模式...

    KaltZK 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<