精华内容
下载资源
问答
  • java多态理解

    2018-12-17 14:10:05
    java 个人对于多态理解和一些笔记。
  • 对JAVA多态理解

    2019-05-06 23:29:22
    对JAVA基础多态理解 多态JAVA中面对对象的一种体现,它也提高了一段代码的复用性和扩展性。 所谓的多态,用一句话来说:相同的行为,不同的实现 多态又分为两种:静态多态 和 动态多态 静态多态 这里的静态是与...

    对JAVA基础多态的理解

    多态是JAVA中面对对象的一种体现,它也提高了一段代码的复用性和扩展性。
    所谓的多态,用一句话来说:相同的行为,不同的实现
    多态又分为两种:静态多态动态多态

    静态多态

    这里的静态是与static无关,那什么叫静态多态?
    它是指:某个方法在编译期就确定了运行期调用的是哪个实现。
    比如:
    单独的方法重写
    在继承关系中,子类拥有和父类相同的行为,但是允许子类重新实现。换句话说就是父类有父类的实现,子类有子类的实现。

    方法的重载
    当一个类中,拥有多个相同的行为(方法名相同),但是参数类型不同,各自有各自的实现

    这个两种方法都体现了静态多态,它们都在编译期就确定了运行期要调用的事哪个实现。

    动态多态

    java的精髓之一

    它是指:某个方法只有在运行期才知道调用的是哪个实现。
    它是通过动态绑定和重写实现
    在继承中,父类的引用可以在运行时交给各个子类的对象,那么我们要调用这个对象的这个行为时是可以通过这个对象的父类的引用直接进行调用的。但是前提是这个行为父类要有。
    而子类对这个行为有不同的实现时,我们就需要进行方法的重写,但是怎么让我们调用时确保调用的是子类的实现,而不是父类的实现呢?
    这个时候,我们就要转型

    转型

    在父类中,子类自动继承父类的属性和行为,那么这个子类是不是就不属于父类了?答案肯定是属于的,就好比:田园犬、二哈、藏獒,你能说它们不是狗吗?
    所以当子类new一个对象的时候,这个对象还是父类的这个类型中的,属于is-a关系;它只是父类这个类型当中的某一个类型的对象。
    那么这个子类对象一定是父类对象之一
    我们都知道基本类型转换分为自动转换强制转换
    自动转换: 取值范围小的数据类型转换为取值范围大的数据类型,可以直接进行转换,语法也不需要更改,这种转换没有任何风险
    强制转换: 取值范围大的数据类型转换为取值范围小的数据类型,这种我们就需要在语法上 进行更改;比如:double转int,语法:int变量名 = (int)double变量名
    这种转换会造成精度丢失
    应用数据类型转换
    应用数据类型转换有一个前提条件------只有继承关系的类才能进行转换,兄第类都不可以!!!
    应用数据类型分为向上转型和向下转型
    向上转型 (自动转型)
    它是子类转换为父类,就是把范围小的对象直接放到范围大的引用变量中,这个时候我们可以直接转,是没有风险的。
    在内存上看:因为每个子类对象都包含了一个完整的父类对象,只是这个父类的引用指向这个对象时,它只能看到属于父类的属性和方法,或者说只能看到定义在父类的属性和方法。
    向下转型(强制转型)
    把父类(范围大)的对象直接放到子类(范围小)的引用变量中,
    在内存上,父类是不可能包含一个完整的子类的,当子类指向这个对象时,会发现有一部分什么都没有,这种转换是有风险的------编译不会报错,但是运行期是可能会发生错误ClassCastExcepthion(类型转换)
    要想不发生风险,最终的执行效果只能是本类的引用指向本类的对象

    所以根本原则:
    1、转型只发生在有继承关系的类
    2、父类的引用指向子类的对象,自动转换,没有问题;子类的引用不能指向父类的对象,否则就有报错的风险。
    3、强转后,最终效果一定是本类的对象指向。

    instanceof 运算符

    那么我们怎么知道这个类型的对象是不是我们本类的呢?
    这时候我们需要用到instanceof 运算符
    它是boolean类型运算符,返回“真”或“假”
    它专门用来判断某个对象是否是某种类型的,语法:对象名 instanceof 类型

    这个时候,我们怎么实现动态多态呢?
    设计的关键点:1、父类的引用,可以在运行时交给它各种子类的对象(因为子类数据类型转父类数据类型 是直接转换)
    2、调用的是定义在父类中,又被子类重写了的方法!开始定义在父类时为了保证,用父类的引用可以调用到这个方法。而让子类去重写,是为了体现不同子类的相同行为不同实现的动态多态性。

    如果想要调用子类特有方法,那么我们就不能使用父类引用(因为它看不到子类的特有属性、行为)
    在这种情况下,我们只能把引用换成相应的子类引用(记住:换的是引用,不是对象)

    由于父类引用可以指向任何子类,所以当我们拥有父类引用的时候就不敢保证强转的正确性,所以我们在做应用数据类型强转之前,一定要做 instanceof 判断是否属于这个类型。

    以上本人粗鄙之见!!!

    展开全文
  • 对Java多态理解

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

    对Java多态的理解

    一、Java多态的实现方式
    1、接口
    2、方法重载,重写
    3、抽象类,抽象方法

    二、Java多态可以分为两种
    一种是操作名称的多态,根据传入的参数不同,会有不同的行为,由方法重载实现。比如,你让一个人求面积,你传入了长方形,长,宽,他就会调用求长方形面积的方法。你穿入了圆,半径,他就会调用求圆面积的方法。
    还有一种是和继承有关的多态,是指同一个行为由不同的对象来执行会有不同的效果。就比如你让猫叫,他就会发出“喵”的声音,你让狗叫,它就会发出“汪”的声音。

    展开全文
  • Java 多态理解

    2019-06-09 21:34:10
    Java 多态多态是同一个行为具有多个不同表现形式或形态的能力;多态就是同一个接口,使用不同的实例而执行不同操作,如图所示: 多态的优点: 1. 消除类型之间的耦合关系 2. 可替换性 3. 可扩充性 4. 接口...

    Java 多态:多态是同一个行为具有多个不同表现形式或形态的能力;多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:

    https://www.runoob.com/wp-content/uploads/2013/12/dt-java.png

    多态的优点:

    1. 消除类型之间的耦合关系

    2. 可替换性

    3. 可扩充性

    4. 接口性

    5. 灵活性

    6. 简化性

     

    多态存在的三个必要条件:

    1、继承

    2、重写

    3、父类引用指向子类对象

     

    重写:

    在 Java 中,当设计类时,被重写的方法的行为怎样影响多态性;重写也就是子类能够重写父类的方法;当子类对象调用重写的方法时,调用的是子类的方法,而不是父类中被重写的方法;要想调用父类中被重写的方法,则必须使用关键字super

     

    多态的实现方式:

     

    方式一:重写

    重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写;重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如:父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,只能抛出 IOException 的子类异常。在面向对象原则里,重写意味着可以重写任何现有方法。

     

    方式二:接口

    1. 生活中的接口最具代表性的就是插座,例如一个三接头的插头都能接在三孔插座中,因为这个是每个国家都有各自规定的接口规则,有可能到国外就不行,那是因为国外自己定义的接口类型。

    2. Java中的接口类似于生活中的接口,就是一些方法特征的集合,但没有方法的实现。

     

    方式三:抽象类和抽象方法

    展开全文
  • Java多态理解

    2020-11-20 16:41:32
    核心特性: 调用方法过程中,都是子类中的重写方法,只有明确调用了super.xxx关键字或者子类中没有该方法时,才会调用父类相同的同名方法。

    核心特性:

    调用方法过程中,都是子类中的重写方法,只有明确调用了super.xxx关键字或者子类中没有该方法时,才会调用父类相同的同名方法。

    展开全文
  • JAVA多态理解

    2021-02-08 21:27:57
    Java多态三个步鄹 1.要有继承关系 2.要有方法重写 3.要有父类应用指向子类对象 代码案例:动物类 1.生成一个动物类,成员变量只有名字name和一个成员方法eat。 package Duotai; public class Animal { private...
  • Java多态理解记录

    2020-05-15 12:24:50
    Java多态就是声明的父类对象被实例化成了子类。 先声明,后面需要再实例化,还能提高性能。 实现多态这就需要了一个前提:有一部分类继承了这个父类。 在代码中多用接口充当父类,所以父类中基本都是定义了几个...
  • java 多态理解

    2015-08-18 08:49:16
    java 多态可以理解为,一个对象具有多种形态。 例如: abstratc class Animal{  public void eat(){} } class dog extends Animal{  public void eat() } Dog对象具有Dog形态,也具有Animal形态。所有继承Animal...
  • 浅谈对java多态理解

    千次阅读 2015-04-15 23:33:34
    浅谈对java多态理解
  • Java 多态理解(1)

    2017-05-23 01:55:56
    java,java多态,构造方法的调用顺序
  • 谈谈对java多态理解

    2020-04-20 20:10:56
    我对于多态理解比较简单:就是对象具有多种形态。父类引用指向子类,在执行过程中判断实际类型,调用不同的方法。 多态有什么作用呢? 为了消除类型之间的耦合关系 多态例子 比如animal,这是动物的统称,现在有dog...
  • java多态理解总结

    2017-11-17 16:36:19
    多态:指允许不同类的对象同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用) 2.实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所...
  • 对java多态理解

    2018-08-14 21:26:06
    多态的定义:指允许不同类的对象同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用) 实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断...
  • 多态Java技术具有很重要的位置,在Java面试中是必问的知识点,那我们如何正确的认识和理解多态呢?多态理解所谓多态,就是指同一个行为具有多个不同表现形式或形态的能力。也可以理解为,多态是指通过指向父类的...
  • Fay的java多态理解

    2016-10-05 18:03:48
    个人理解多态就是多种形态,气是水的一种形态,冰也是水的一种形态,只是我们看到的外表不一样!
  • 谈谈对Java多态理解

    2020-03-23 15:18:02
    多态:继承父类的子类重写父类的某个方法,不同的子类调运同一个方法可以,产生不同的结果。 多态的三个必要条件: 1.继承父类 2.重写父类的方法 3.父类的引用指向子类对象 面向对象的三大特性封装、继承、多态...
  • 对java多态作用的理解

    2020-08-10 11:15:19
    对多态理解 先引用某位博主的原话,再以下话的理解:原文链接 看Java核心技术这本书时,多态的内容讲解的很少,只是举个例子告诉我们怎样使用多态,而没有明确说明为什么使用多态的问题。 谈到面向对象的编程...
  • 对java多态理解

    2010-09-03 22:53:43
    代码演示对java多态理解 从代码演示中更好的理解多态的作用
  • 关注我,每天三分钟,带你轻松掌握一个Java相关知识点。多态顾名思义,指多种状态。一个东西被人类创造,一定为了解决某种问题的,那么多态存在是为了解决什么问题呢?换言之,多态存在的意义是什么?假如我们想要写...
  • 对Java多态的深入理解

    千次阅读 2017-04-01 10:53:10
    本文给大家重点讲述一下对java多态的深入理解 首先我们先理解什么是多态:大家都知道面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。所以多态也是最重要的知识点。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,169
精华内容 32,867
关键字:

对java多态的理解

java 订阅