精华内容
下载资源
问答
  • 谈谈对java多态的理解
    2021-08-13 14:52:24

    同一个消息可以根据发送对象的不同而采用多种不同的行为方式,在执行期间判断所引用的对象的实际类型,根据其实际的类型调用其相应的方法。

    作用:消除类型之间的耦合关系。实现多态的必要条件:继承、重写(因为必须调用父类中存在的方法)、父类引用指向子类对象

    更多相关内容
  • 【Java面试题】谈谈对Java多态理解
  • 谈谈对java多态理解

    千次阅读 2019-05-07 23:23:47
    面向对象的三大基本特征:封装、继承、多态 多态是指:父类引用指向子类对象,在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。(同一消息可以根据发送对象的不同而采用多种不同的行为方式...

    面向对象的三大基本特征:封装、继承、多态

    多态是指:父类引用指向子类对象,在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。(同一消息可以根据发送对象的不同而采用多种不同的行为方式。

    多态的作用:消除类型之间的耦合关系。

    实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。

    实现多态的三要素:继承,重写,父类引用指向子类对象(即,声明是父类,实际指向的是子类的一个对象)

    void doSomething(Shape shape){
       shape.draw();
       ......
       shape.erase();
    }
    
    Circle circle = new Cricle();
    Traingle traingle = new Traingle();
    Line line = new Line();
    doSonething(circle);
    doSonething(traingle);
    doSonething(line);

     

    展开全文
  • 本文为学习笔记,学习资料为:【Java面试题】谈谈对Java多态理解_哔哩哔哩_bilibili 多态的英文是polimorphism,poli为“许多”,morphism为“形态”。 多态的形式 1)编译时多态 编译期间决定目标方法;通过...

    本文为学习笔记,学习资料为:【Java面试题】谈谈对Java多态的理解_哔哩哔哩_bilibili

    多态的英文是polimorphism,poli为“许多”,morphism为“形态”。

    多态的形式

    1)编译时多态

    编译期间决定目标方法;通过overloading方法重载实现;方法名相同,参数不同。

    class AddNumbers {
        public int addition (int x, int y) {
            return x + y;
        }
        
        public int addition (int x, int y, int z) {
            return x + y + z;
        }
    
        public int addition (double x, int y) {
            return (int)x + y;
        }
        
        public static void main (String[] args) {
            AddNumbers a1 = new AddNumbers();
            System.out.println(a1.addition(1, 2));
            System.out.println(a1.addition(1, 2, 3));
            System.out.println(a1.addition(3, 4));
        }
    }

    2)运行时多态

    运行期间决定目标方法;同名同参(子类复写父类方法);overriding方法重写和继承实现;JVM决定目标方法。

    class Animal {
        void run() {
            System.out.println("animal is running...");
        }
        void eat() {
            System.out.println("animal is eating...");
        }
    }
    
    class Dog extends Animal {
        void run() {
            System.out.println("dog is running...");
        }
    }
    
    
    class Cat extends Animal {
        void run() {
            System.out.println("cat is running...");
        }
        void eat() {
            System.out.println("cat is eating...");
        }
    }
    
    public class AnimalDemo {
        public static void main(String[] args) {
            Animal dog = new Dog();
            Animal cat = new Cat();
            dog.run();//dog is running...
            dog.eat();//animal is eating...  因为dog没有重写(overriding) eat()方法,所以执行父类方法
            cat.run();//cat is running...
            cat.eat();//cat is eating...
        }
    }

     

     方法表

    JVM结构

     JVM在方法区调用目标方法,通过invokeVirtual指令进行调用,通过方法表寻找方法的入口地址,通过invokeindex调用方法。

    总结

    在回答时,要答出:多态是什么?一个类的多种形式即多态。(一个对象变量可以指示多种实际类型的现象,称为多态。)多态的实现方式:编译时多态和运行时多态,也称为静态多态和动态多态。多态实现原理,以及方法表的作用。方法的实际入口地址指向的是最终实现了该方法的那个类的实例。

    展开全文
  • java多态理解

    2021-11-26 19:01:45
    一、多态是什么 面向对象的三大特性是封装、继承、多态多态(polymorphic)的定义:父类引用变量可以指向子类对象,允许不同类的对象可以调用同一个方法,即同一个方法可以根据调用对象的不同而有不同的实现...

    一、多态是什么

    1. 面向对象的三大特性是封装、继承、多态。
    2. 多态(polymorphic)的定义:父类引用变量可以指向子类对象,允许不同类的对象可以调用同一个方法,即同一个方法可以根据调用对象的不同而有不同的实现形式。
    3. 实现多态的技术是动态绑定(dynamic binding),是指在方法的执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
    4. 多态的作用:消除类型之间的耦合关系。
    5. 现实中,关于多态的例子有很多。比方说按下 ctrl+F 键这个动作,如果当前在如果当前在 Word 下弹出的就是 Word 的查找和替换功能;在 vscode中弹出的就是 vscode的查找和替换功能。同一个事件在不同的对象中被执行会产生不同的结果。

    二、多态存在的三个必要条件

         1. 继承;
         2. 重写;
         3. 父类引用指向子类对象。

    三、多态的特性

    1. 可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
    2. 可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。
    3. 接口性(interface-ability)。多态是父类通过方法签名,向子类提供了一个共同接口,由子类来完成或者覆盖它而实现的。比如说定义一个父类Shape,规定了两个实现多态的接口方法,computeArea()以及computeVolume()。子类,如Circle和Sphere为了实现多态,就可以完成或者覆盖这两个接口方法。

    四、练习题

    public class Test {
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Father a1 = new Father();
            Father a2 = new Son();
            Son b = new Son();
            Grandson1 c = new Grandson1();   
            Grandson2 d = new Grandson2();   
            			
            System.out.println(a1.show(a2)); // It's Father and Father
            System.out.println(a1.show(b)); // It's Father and Father
            System.out.println(a1.show(c));  // It's Father and Father
            System.out.println(a1.show(d));  // It's Father and Grandson2
            
            System.out.println(a2.show(a1));  // It's Son and Father
            System.out.println(a2.show(b));  // It's Son and Father
            System.out.println(a2.show(c));  // It's Son and Father
            System.out.println(a2.show(d)); // It's Father and Grandson2
            
            System.out.println(b.show(b));  //  It's Son and Son
            System.out.println(b.show(a1));  // It's Son and Father
            System.out.println(b.show(a2));  // It's Son and Father
            System.out.println(b.show(c));  // It's Son and Son
            System.out.println(b.show(d));   // It's Father and Grandson2
    	}
    }
    class Father {  
        public String show(Grandson2 obj){  
               return ("It's Father and Grandson2");  
        }   
        public String show(Father obj){  
               return ("It's Father and Father");  
        }   
    }   
    class Son extends Father{  
            public String show(Son obj){  
                   return ("It's Son and Son");  
            }  
            public String show(Father obj){  
                   return ("It's Son and Father");  
            }   
    }  
    class Grandson1 extends Son{}   
    class Grandson2 extends Son{}

    解析:

            a1和a2被定义为Father类,可以使用Father类的show(Grandson2)和show(Father)两个方法;其中,a2是多态实现的,也可以使用Son类的show(Son)和show(Father)方法,并且重写了Father类的show(Father)方法;b是Son类,继承了Father类,可以使用Father类的show(Grandson2)和show(Father)两个方法以及Son类的show(Son)和show(Father)方法,并且重写了Father类的show(Father)方法

    五、补充

            向上转型(upcasting):一个Son类型的新对象的方法被Father对象重载使用

    Father father=new Son();
    father.show();//此时的show()方法是重载Son类的方法

            注意:

                    1. 向上转型不要强制转型(int intNum=(int) doubleNum;为强制转型)

                    2. 向上转型后父类引用不能调用子类自己的方法

            向下转型(downcasting):一个原本是Son类的对象被赋值给了Father类的对象,后又强制转型为Son类对象,转型后可以访问原本属于Son类的所有方法,因为它原本就是Son类的方法

    Son son=new Son();
    
    Father father=son;
    
    son=(Son)father;

    展开全文
  • Java多态理解

    千次阅读 2021-11-29 18:35:26
    Java 多态 除封装和继承之外,面向对象程序设计的第三个支柱。简单来说,多态意味着父类型的变量可以引用子类型的对象 ???? 多态:同一个行为具有不同表现形式或形态的能力,即对象多种表现形式的体现,例如子类的...
  • java多态:意思是一种行为具有多个不同表现形式或形态的能力。多态分为俩种:编译时期多态和运行时期多态。 例如: 方法重载:是属于编译时期多态,方法名可以相同,但是在编译时期可以根据参数类型、参数个数确定...
  • 谈谈对Java多态理解

    2020-03-23 15:18:02
    多态:继承父类的子类重写父类的某个方法,不同的子类调运同一个方法可以,产生不同的结果。 多态的三个必要条件: 1.继承父类 2.重写父类的方法 3.父类的引用指向子类对象 面向对象的三大特性封装、继承、多态...
  • 字节面试题-谈谈对 java 多态理解 多态是指父类的某个方法被子类重写时,可以产生自己的功能行为,同一个操作 作用于不同对象,可以有不同的解释,产生不同的执行结果。 多态的三个必要条件: 继承父类。 重写父类...
  • Java多态的认识和理解

    2022-04-30 17:06:05
    多态是面向对象程序设计的三大特征之一...同一个行为具有多个不同表现形式或形态的能力,指允许不同类的对象同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。 理解 多态是同一个...
  • JAVA多态理解

    千次阅读 多人点赞 2022-03-24 20:54:23
    JAVA多态理解以及使用。
  • Java多态理解

    千次阅读 2022-02-04 22:56:27
    2.多态的定义:指允许不同类的对象同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用) 3.实现多态的技术称为:动态绑定(dynamic binding),是指在执行...
  • 【面试常问】谈谈对多态理解

    千次阅读 2022-01-21 22:04:49
    谈谈对多态理解 在面试中如果问到这个问题,我们应该咋么回答呢?我就写一下我的看法如有错误还请个位指正! 文章目录 谈谈对多态理解 什么是多态多态的实现 向上转型 向下转型 多态的好处 什么是多态? ...
  • 对Java中的多态理解

    2020-08-16 10:13:16
    外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。 继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。 所谓多态 就是指程序中定义的引用变量所指向...
  • Java中的多态如何理解——详解

    千次阅读 多人点赞 2022-04-30 17:16:40
    本篇文章我们主要讲解的是Java中的多态,那么什么是多态呢?同类型的对象,执行同一个行为,会表现出不同的行为特征。接下来让我们一起对多态进行详细地讲解。
  • Java基础(多态理解与应用)

    万次阅读 多人点赞 2019-05-25 11:23:07
    1.多态概述 多态是继封装、继承之后,面向对象的第三大特性。... 多态现实意义理解: 现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态。...
  • 1.概述我们知道java面向对象的三大特征:封装 继承 多态。封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据。继承是为了重用父类代码,同时为实现多态性作准备。他们都...
  • 1、面向对象Java中关于对多态理解: 在学习了Java多态以后,对多态有了进一步的理解,下面通过一个例子来展示: 动物类:Pet package polymorphism; public class Pet { //写了一个call的方法,模拟动物的叫 ...
  • java多态的学习和理解
  • 对Java多态理解

    2020-06-04 14:40:56
    对Java多态理解 Java多态的实现方式 1、接口 2、方法重载,重写 3、抽象类,抽象方法 Java多态可以分为两种 一种是操作名称的多态,根据传入的参数不同,会有不同的行为,由方法重载实现。比如,你让一个人求面积...
  • 对java多态理解

    2010-09-03 22:53:43
    代码演示对java多态理解 从代码演示中更好的理解多态的作用
  • 多态是面向对象的重要特性之一,我试着用最简单的方式解释Java多态:要正确理解多态,我们需要明确如下概念:・定义类型和实际类型・重载和重写・编译和运行其中实际类型为new关键字后面的类型。重载发生在编译阶段...
  • 谈谈对多态理解

    2018-09-12 20:28:39
    多态是面向对象的特性之一,从字面上理解多态就是指一个对象在运行是会有多种形态,就比如可以说student是一个person,也可以说student是一个object。 我们来看一个经典的例子: Service service=new ...
  • 文章目录面试题——谈谈对Java多态理解1.多态是什么?2.多态实现方式?2.1.编译时多态/静态多态2.2.运行时多态/动态多态3.多态实现原理题外话: 面试题——谈谈对Java多态理解 1.多态是什么? 多态polymorphism...
  • 对多态理解java

    2021-03-05 21:22:55
    对多态理解:多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用...
  • 多态原理多态逐渐广义化2. Object 类 1. 多态 什么是多态? 一个对象变量(例如, 变量 e ) 可以指示多种实际类型的现象被称为多态(polymorphism)。在运行时能够自动地选择调用哪个方法的现象称为动态绑定(dynamic...
  • 理解的要点:多态意味着父亲的变量可以指向子类对象面向对象程序设计的三大支柱是封装、继承和多态封装对外把相应的属性和方法实现的细节进行了隐藏。继承关系使一个子类继承父亲的特征,并且加上了一些新的特征。...
  • java 多态理解(2)

    2017-05-23 02:09:14
    继承,清理
  • 展开全部面向对象编程有三大特性:636f...外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,293
精华内容 4,117
关键字:

谈谈对java多态的理解