精华内容
下载资源
问答
  • 继承为了重用父类代码,同时为实现多态性作准备。那么什么是多态呢?方法重写、重载与动态连接构成多态性。Java之所以引入多态概念,原因之一它在类继承问题上和C++不同,后者允许多继承,这确实给其带来...

    面向对象编程有三个特征,即封装、继承和多态。

    封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据。

    继承是为了重用父类代码,同时为实现多态性作准备。那么什么是多态呢?

    方法的重写、重载与动态连接构成多态性。

    Java之所以引入多态的概念,原因之一是它在类的继承问题上和C++不同,后者允许多继承,这确实给其带来的非常强大的功能,但是复杂的继承关系也给C++开发者带来了更大的麻烦,为了规避风险,Java只允许单继承,派生类与基类间有IS-A的关系(即“猫”is a “动物”)。

    这样做虽然保证了继承关系的简单明了,但是势必在功能上有很大的限制,所以,Java引入了多态性的概念以弥补这点的不足,此外,抽象类和接口也是解决单继承规定限制的重要手段。同时,多态也是面向对象编程的精髓所在。

    要理解多态性,首先要知道什么是“向上转型”。

    我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类。我可以通过

    Cat c = new Cat();

    实例化一个Cat的对象,这个不难理解。但当我这样定义时:

    Animal a = new Cat();

    这代表什么意思呢?

    很简单,它表示我定义了一个Animal类型的引用,指向新建的Cat类型的对象。

    由于Cat是继承自它的父类Animal,所以Animal类型的引用是可以指向Cat类型的对象的。那么这样做有什么意义呢?因为子类是对父类的一个改进和扩充,所以一般子类在功能上较父类更强大,属性较父类更独特,

    定义一个父类类型的引用指向一个子类的对象既可以使用子类强大的功能,又可以抽取父类的共性。

    所以,父类类型的引用可以调用父类中定义的所有属性和方法,而对于子类中定义而父类中没有的方法,它是无可奈何的;

    同时,父类中的一个方法只有在在父类中定义而在子类中没有重写的情况下,才可以被父类类型的引用调用;

    对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法,这就是动态连接。

    看下面这段程序:

    class Father{

    public void func1(){

    func2();

    }

    //这是父类中的func2()方法,因为下面的子类中重写了该方法

    //所以在父类类型的引用中调用时,这个方法将不再有效

    //取而代之的是将调用子类中重写的func2()方法

    public void func2(){

    System。

    out。println("AAA");

    }

    }

    class Child extends Father{

    //func1(int i)是对func1()方法的一个重载

    //由于在父类中没有定义这个方法,所以它不能被父类类型的引用调用

    //所以在下面的main方法中child。

    func1(68)是不对的

    public void func1(int i){

    System。out。println("BBB");

    }

    //func2()重写了父类Father中的func2()方法

    //如果父类类型的引用中调用了func2()方法,那么必然是子类中重写的这个方法

    public void func2(){

    System。

    out。println("CCC");

    }

    }

    public class PolymorphismTest {

    public static void main(String[] args) {

    Father child = new Child();

    child。

    func1();//打印结果将会是什么?

    }

    }

    上面的程序是个很典型的多态的例子。子类Child继承了父类Father,并重载了父类的func1()方法,重写了父类的func2()方法。重载后的func1(int i)和func1()不再是同一个方法,由于父类中没有func1(int i),那么,父类类型的引用child就不能调用func1(int i)方法。

    而子类重写了func2()方法,那么父类类型的引用child在调用该方法时将会调用子类中重写的func2()。

    那么该程序将会打印出什么样的结果呢?

    很显然,应该是“CCC”。

    对于多态,可以总结它为:

    一、使用父类类型的引用指向子类的对象;

    二、该引用只能调用父类中定义的方法和变量;

    三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用)

    四、变量不能被重写(覆盖),”重写“的概念只针对方法,如果在子类中”重写“了父类中的变量,那么在编译时会报错。

    多态详解(整理)2008-09-03 19:29多态是通过:

    1 接口 和 实现接口并覆盖接口中同一方法的几不同的类体现的

    2 父类 和 继承父类并覆盖父类中同一方法的几个不同子类实现的。

    一、基本概念

    多态性:发送消息给某个对象,让该对象自行决定响应何种行为。

    通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。

    java 的这种机制遵循一个原则:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。

    1。 如果a是类A的一个引用,那么,a可以指向类A的一个实例,或者说指向类A的一个子类。

    2。 如果a是接口A的一个引用,那么,a必须指向实现了接口A的一个类的实例。

    编辑推荐:

    Spring简单实现邮件发送

    JSP标准标记库(JSTL)例程

    浅谈linksys无线路由测试。

    全部

    展开全文
  • PHP对象多态性是什么? from:http://www.cnblogs.com/ricklz/p/9263439.html 多态性相同操作或函数、过程可作用于多种类型的对象上并获得不同结果。不同的对象,收到同一消息将可以产生不同结果,...

    PHP对象中多态性是什么?

    from:http://www.cnblogs.com/ricklz/p/9263439.html
    多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息将可以产生不同的结果,这种现象称为多态性。
    多态性允许每个对象以适合自身的方式去响应共同的消息。多态性增强了软件的灵活性和重用性。

    展开全文
  • 静态动态,实际就是指的重载的概念,系统在编译时,就能知晓该具体调用哪个方法。动态多态指在运行中才能动态的确定方法所指对象,动态多态的实现方式重写父类中同名成员方法,其调用规则依据对象在实例化时而...

    什么是多态?简而言之就是相同的行为,不同的实现。 而多态也分为静态多态(重载)、动态多态(重写)和动态绑定。

    静态动态,实际就是指的重载的概念,是系统在编译时,就能知晓该具体调用哪个方法。动态多态指在运行中才能动态的确定方法所指对象,动态多态的实现方式是重写父类中同名成员方法,其调用规则是依据对象在实例化时而非定义时的类型,相应的调用对应类中的同名成员方法,它需要通过动态绑定和重写机制来实现。

    由类的继承性我们知道类之间的继承关系使子类具有父类的所有变量和方法,父类所具有的方法也可以在它所有子类中使用,发给父类的消息也可以发送给子类 又可以推出=> 子类的对象也是父类的对象=>子类的对象既可以做本身的类型,也可以做父类的类型。我们把这个称之为向上转型技术。

    向上转型技术:一个父类的引用变量可以指向不同的子类对象,或者说一个子类对象可以被当做一个父类类型。在操作中我们可以使用instanceof来判断运行时对象的真正类型。    格式:变量名 instanceof 引用类名。(返回值boolean型)。

    动态邦定技术:运行时根据父类引用变量所指对象的实际类型执行相应的子类方法,从而实现多态性。

    文字描述通常是不宜理解的,在程序中的思路如下例:

    /**

    * 定义一个父类

    */

    public Class Parents {

    public void print() {

    System.out.println(“parents”);

    }

    }

    /**

    * 定义两个子类

    */

    public Class Father extends Parents {

    public void print() {

    System.out.println(“father”);

    }

    }

    public Class Mother extends Parents {

    public void print() {

    System.out.println(“mother”);

    }

    }

    /**

    * 测试输出结果的类

    */

    public Class Test {

    public void find(Parents p) {

    p.print();

    }

    public static void main(String[] args) {

    Test t = new Test();

    Father f = new Father();

    Mother m = new Mother();

    t.find(f);

    t.find(m);

    }

    }

    最后的输出结果分别是father和mother,将子类的引用传给父类的引用,然后调用重写方法,父类的引用之所以能够找到应该调用那个子类的方法,就是因为程序在运行时进行了绑定。

    展开全文
  • Python一种纯粹面向对象语言。面向对象编程中四大特征分别:抽象、封装、继承和多态。多态根据上下文,对象可以采用多种形式。程序将确定该对象每次执行所需含义或用法,从而减少了重复代码。我国有句俗语...

    Python是一种纯粹的面向对象语言。面向对象编程中的四大特征分别是:抽象、封装、继承和多态。多态根据上下文,对象可以采用多种形式。程序将确定该对象每次执行所需的含义或用法,从而减少了重复代码。

    我国有句俗语:“龙生九子,各有不同”。这就是多态。多态是同一类事物具有的多种形态。多态是面向对象编程的重要特点之一。

    Python本身就是一种多态语言:

    上述程序中,参数a和b可以接收不同的数据类型。当a和b同时是数字类型时,add()函数将进行加法运算;当a和b同时是字符串类型或列表类型时,add()函数将进行拼接运算。

    下面用一个示例来介绍计算机编程语言中的多态。

    上述程序中,定义了四个类,分别是Animal类、People类、Dog类和Pig类,其中People类、Dog类和Pig类都继承了Animal类。这就体现了同一类事物的多种形态。这四个类都有一个talk()方法。试着调用talk()方法,代码如下:

    上述程序中,调用Func()函数为同一个操作,但调用的参数是不同的,即调用了不同的实例作为参数。由运行结果可知,有不同的类创建不同的实例,以不同的实例作为参数时,调用talk()得到的打印结果是不同的,这是因为每个实例具有不同的实现方式,这就是多态性的体现。

    多态性是同一个操作因作用实例不同而表现出不同实现方式的特性。多态性增加了程序的灵活性,以不变应万变,无论实例千变万化,使用者都是以同一种形式去调用;多态性还增加了程序可扩展性,通过继承创建新的类,子类可以使用父类的方法,也可以使用自己重写的方法。

    展开全文
  • Python一种纯粹面向对象语言。面向对象编程中四大特征分别:抽象、封装、继承和多态。多态根据上下文,对象可以采用多种形式。程序将确定该对象每次执行所需含义或用法,从而减少了重复代码。 我国有句...
  • JAVA面向对象的多态性

    2019-09-30 05:08:44
     静态动态,实际就是指的重载的概念,系统在编译时,就能知晓该具体调用哪个方法。动态多态指在运行中才能动态的确定方法所指对象,动态多态的实现方式重写父类中同名成员方法,其调用规则依据对象在实例化...
  • 1、多态性指的是什么? 多态性,可以理解为一个事物的多种表现形态。 1)方法的重载与重写 2)子类对象的多态性2、子类对象的多态性的前提: 1)有类的继承 2)有子类对父类方法的重写 3)有向上转型,即把...
  • 1.多态性指的是什么?多态性,可以理解为一个事物的多种表型形态。  1)方法的重载和重写  2)子类对象的多态性 2.子类对象的多态性使用的前提: 1 - 要有类的继承 2 - 要有子类对父类方法的重写 3.程序运行...
  • 对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用) 2、多态的优点: 消除类型之间的耦合关系 可替换性 可扩充性 接口性 灵活性 简化性 3、实现多态的技术: ​ 动态绑定,是指在执行...
  • 多态性指的是什么? 多态性,可以理解为一个事物的多种形态。 1)方法的重载与重写 2)子类对象的多态性 1.子类对象的多态性使用的前提: ①要有类的继承 ②要有子类对父类方法的重写 2.程序运行分为...
  • python面向对象的多态与多态性

    千次阅读 2018-06-27 23:36:18
    # 1.什么是多态 # 多态指的是同一种事物的...# 多态性: # 继承同一个类的多个子类中有相同的方法名 # 那么子类产生的对象就可以不用考虑具体的类型而直接调用功能 # # # 3.如何用 import abc class Ainmal(met...
  • 1.多态性指的是什么?多态性可以理解为一个事物的多种表现形态。 1)方法的重载与重写 2)子类对象的多态性2.子类对象的多态性使用的前提:①要有类的继承 ②要有子类对父类方法的重写。3.程序运行分为编译状态和运行...
  • 多态性指的是什么?多态性,可以理解为一个事物的多种表型形态。 * 1)方法的重载与重写 2)子类对象的多态性 * * 2.子类对象的多态性使用的前提:①要有类的继承②要有子类对父类方法的重写 * * 3.程序运行...
  • 什么是多态面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都为多态而准备的。这我们最后一个概念,也最重要的知识点。多态的定义:允许不同类的对象对同一消息做出响应。即同一消息...
  • 什么要讲多态性 最近发现大学时候学习的知识太不扎实了,连面向对象的三大特性都不怎么了解,之前可能学了一个假的面向对象吧。 所以打算写一篇关于多态的博客。 什么是多态 多态指的是一类事物有多种形态。一般是...
  • 多态性指的是什么?多态性可以理解为一个事物的多多种表现形态。 //1)方法的重载和重写 2)子类对象的多态性 //2.子类对象的多态性使用的前提: //1)要有类的继承 2)要有子类对父类方法的重写 //3。程序运行分为 ...
  • # 多态性:在多套的背景下,可以不用考虑对象的具体类型的前提下直接使用对象# 多态性的精髓:统一 3、如何使用多态 1 imort abc 2 class People(metaclass=abc.ABCMeta): 3 def __ini...
  • 1 什么多态性 多态指的是同一种事物多种形态,在程序中用继承可以表现出多态。多态性:可以在不用考虑对象具体类型的前提下而直接使用对象下的方法 2、为什要用多态 用基类创建一套统一的规则,强制子类去遵循...
  • 面向对象的三大特性,不管面试题还是什么,总会被提及到。封装和继承,个人应该都能看懂,但是对于多态,本人以前却没有理解透彻。今天就整理一些对多态的理解 多态应该分为两种类型: 1.编译时多态:其实就是...
  • 多态性面向对象编程的又一个重要特征,它是指在父类中定义的属性和方法...而运行时多态动态的,它通过动态绑定来实现的,也就是大家通常所说的多态性。 Java 实现多态有 3 个必要条件:继承、重写和向上转型。只
  • * 多态面向的是对象,指的是对象的多态性 * -------------------------------------------------- * 代码中的多态性,其实就是一句话,父类引用指向子类对象,就是父类可以引用不同子类的对象,产
  • Java中多态性的实现什么是多态面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都为多态而准备的。这我们最后一个概念,也最重要的知识点。多态的定义:允许不同类的对象对同一消息...
  • 文件有多种形态:文件、文本文件、可执行文件二 多态性(1)什么是多态性(注意:多态与多态性是两种概念)多态性是指具有不同功能函数可以使用相同函数名,这样就可以用一个函数名调用不同内容函数。在面向对象...
  • 多态性是面向对象编程又一个重要特征,它是指在父类中定义属性和方法被子类继承之后,可以具有不同数据类型或表现出不同行为,这使得同一个属性或方法在父类及其各个子类中具有不同含义。 对面向对象来说...
  • 5.1 编译时的多态性与运行时的多态性 1、什么时多态性 【定义】 (1)在面向对象方法中,不同对象收到相同的消息时,产生不同的行为(即方法) (2)在C++程序设计中,多态性是指用一个名字定义不同的函数,函数...
  • java中的多态性

    2019-10-21 20:39:08
    说官方点就是:多态性是指允许不同 类的对象对同 一消息作出响应。多态性包括参数化多态性和包含多态性多态性语言具有灵活、抽象、行为共享、代码共享优势,很好解决了应用程序函数同 名问题。 说道这里,先说...
  • 目录 第十一章、面向对象之多态、... 三、为什么要用多态性多态性的好处) 四、鸭子类型 第十一章、面向对象之多态、多态性 一、多态 多态指的是一类事物有多种形态 动物有多种形态:人、狗、猪 clas...
  • 多态性

    2017-08-17 00:28:00
    多态性指的是什么?多态性,可以理解为一个事物的多种表型形态。 * 1)方法的重载与重写 2)子类对象的多态性 * * 2.子类对象的多态性使用的前提:①要有类的继承②要有子类对父类方法的重写 * * 3.程序运行分为编译...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 535
精华内容 214
关键字:

对象的多态性指的是什么