十二、三大核心特征-多态

多态指的是面向对象编程时,屏蔽了子类对象之间的差异,可以使调用对象方法的客户端代码中代码保持通用性,而不必针对每个不同的对象写不同的实现。

多态的实现依靠的是继承、抽象方法或接口的特性。

例如:

//父类是一个抽象类Animal
abstract class Animal
{
    abstract public function talk();
}

//子类Dog
class Dog extends Animal
{
    public function talk()
    {
        echo ‘新年旺旺‘;
    }
}

//子类Cat
class Cat extends Animal
{
    public function talk()
    {
        echo ‘喵喵‘;
    }
}

//客户端类Person
class Person
{
    public function __construct()
    {
        $cat = new Cat();
        $dog = new Dog();
        $this->touchHead($cat);//输出:喵喵
        $this->touchHead($dog);//输出:新年旺旺
    }
    //摸动物的头,动物就会叫
    privatefunction touchHead(Animal $animal)
   {
        $animal->talk();
   }
}

在touchHead方法中,我们无需知道具体的是哪个对象,只要这个对象是派生于动物父类,就可以调用talk方法。这种特性就是多态。

原文地址:https://www.cnblogs.com/mysic/p/8451232.html

时间: 2024-11-07 16:25:25

十二、三大核心特征-多态的相关文章

第十二周周总结 多态

java面向对象的四大特性 继承 封装 多态 (抽象) 多态 一.四种表现形式 1.方法重载 2.方法重写 3.抽象类 4.接口 二.同一个对象 体现出来的多种不同形态(身份) 将一种行为表现出不同的效果 要想实现多态的效果 需要现有继承方法 三.体现 1.父类类型的引用 指向 子类的对象 Person p = new Teacher(); 2.该引用只能调用父类中定义的属性或方法 3.如果子类中将父类的方法重写,那么调取方法后执行的结果是子类重写之后的那个结果 如果父类与子类有同名的属性 执行

十二、面向对象之多态

1.多态的概念 一种事物的多种体现形式 方法重载,方法的重写都是多态的体现 2.多态的体现形式 a.父类的引用指向子类的对象 b.接口的引用指向实现类的对象 总结: a.如果使用了多态,将不能访问子类或者实现类中特有的属性和方法 b.在多态中访问成员变量时,如果子类中出现了和父类重名的成员变量,都访问的是父类中成员变量 c.在多态中调用了方法,只有子类重写了父类中的方法,会调用子类中重写之后的方法,如果没有重写,调用的是父类中的方法 3.使用多态的好处 a.提高了代码的可维护性 b.提高代码的扩

三大核心特征-封装

封装,就是把一堆东西装起来,并封上,使你从外部看不到这堆东西在内部是如何组织到一起的.简而言之,就是掩盖细节. 什么是封装? 保护隐私,我们不希望别人看到内部细节是如何运作的,只想让别人看到我们希望别人看到的功能.例如:汽车转向是通过转动方向盘实现的.汽车的转向系统就是封装后只暴露了一个方向盘给驾驶员,驾驶员通过转动方向盘实现汽车的转向,而驾驶员是看不到转动方向盘以后转向轴是如何把转向操作传递给转向器,转向器是如何通过转向臂.液压助力器.梯形臂.转向横拉杆等细节功能去实现转向的. 为什么要封装?

面向对象编程(十四)——面向对象三大特性之多态②

面向对象最核心的机制——动态绑定,也叫多态. 通过下面的例子理解动态绑定,即多态 1 package javastudy.summary; 2 3 class Animal { 4 /** 5 * 声明一个私有的成员变量name. 6 */ 7 private String name; 8 9 /** 10 * 在Animal类自定义的构造方法 11 * @param name 12 */ 13 Animal(String name) { 14 this.name = name; 15 } 16

Java面向对象编程三大特征 - 多态

Java面向对象编程三大特征 - 多态 本文关键字:Java.面向对象.三大特征.多态多态是面向对象编程的三大特征之一,是面向对象思想的终极体现之一.在理解多态之前需要先掌握继承.重写.父类引用指向子类对象的相关概念,对继承还没有完全明白的同学可进传送门:Java面向对象编程三大特征 - 继承. 一.抽象类 在继承中,我们已经了解了子父类的关系以及如何对子父类进行设计,如果已经存在多个实体类,再去定义父类其实是不断的抽取公共重合部分的过程,如果有需要将会产生多重继承关系.在抽取整理的过程中,除了

Java基础十二--多态是成员的特点

Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println(f.num);//是父类,答案是3 2,成员函数(非静态). 编译看左边,运行看右边. 因为成员函数存在覆盖特性. Fu f = new Zi();//f.show();输出的是子类里面的show方法 3,静态函数. 编译和运行都看左边. 静态函数不具备多态性,多态性是对象的多态性,然后静态函数不涉

ng机器学习视频笔记(十二) ——PCA实现样本特征降维

ng机器学习视频笔记(十二) --PCA实现样本特征降维 (转载请附上本文链接--linhxx) 一.概述 所谓降维(dimensionality reduction),即降低样本的特征的数量,例如样本有10个特征值,要降维成5个特征值,即通过一些方法,把样本的10个特征值映射换算成5个特征值. 因此,降维是对输入的样本数据进行处理的,并没有对预测.分类的结果进行处理. 降维的最常用的方法叫做主成分分析(PCA,principal component analysis).最常用的业务场景是数据压

面向对象的三大基本特征和五大基本原则

前言 前文提到,面向对象的三个特征:封装.继承.多态.那么面向对象是怎么体现这三个特征呢? 关于五大基本原则,个人找资料的时候看得头都大了,对新手(如我)来说还是比较有理解难度的,本篇用较为简单的表述来帮助理解,想先看进阶版(完全版)的可以先移步:牢记面向对象五个基本原则 面向对象的三大基本特征 1. 封装 封装,就是将客观事物抽象为逻辑实体,实体的属性和功能相结合,形成一个有机的整体.并对实体的属性和功能实现进行访问控制,向信任的实体开放,对不信任的实体隐藏.,通过开放的外部接口即可访问,无需

Java(第十二章)

第十二章 一.变量的作用域(有效的使用范围) 1.变量有2种 1.1成员变量(属性) 声明在类的里面,方法的外面 1.2 局部变量 声明在方法里面或for循环结构中 2.调用时的注意事项(初始值不同.作用域不同) 2.1 成员变量,有默认值 在当前类直接通过成员变量名调用:在其他类中,通过该类的对象名.属性(成员变量)名调用:成员变量名称在同一个类中是唯一的. 2.2 局部变量,没有默认值,必须先赋值再使用 局部变量,只能在当前的方法中使用,其他方法和其他类不能调用:在同一个方法中名称是唯一的,