首页 > 试题广场 >

java中提供了哪两种用于多态的机制

[不定项选择题]
java中提供了哪两种用于多态的机制
  • 通过子类对父类方法的覆盖实现多态
  • 利用重载来实现多态.即在同一个类中定义多个同名的不同方法来实现多态。
  • 利用覆盖来实现多态.即在同一个类中定义多个同名的不同方法来实现多态。
  • 通过子类对父类方法的重载实现多态
推荐
AB
Java通过方法重写和方法重载实现多态
方法重写是指子类重写了父类的同名方法
方法重载是指在同一个类中,方法的名字相同,但是参数列表不同
编辑于 2016-01-12 11:12:59 回复(6)
重载不能实现多态
因为重载方法的调用是在编译时确定的,也就是“静态绑定”,如果实参是引用类型,编译器会根据引用的类型来决定调用哪个重载方法,而多态方法的调用是根据运行时对象的实际类型来决定的,也就是“动态绑定”
结论:重载方法是根据引用的类型来决定方法的调用,与引用指向的对象无关啊!重写方法是根据引用指向的对象决定调用父类方法还是子类方法!这才是多态,重载怎么能实现多态呢?!
发表于 2016-08-15 10:45:33 回复(27)
多态分为 编译时多态 和 运行时多态 。其中 编辑时多态是静态的 , 主要是指方法的重载 ,它是根据参数列表的不同来区分不同的函数,通过编辑之后会变成两个不同的函数,在运行时谈不上多态。而 运行时多态是动态的 ,它是 通过动态绑定来实现的 ,也就是我们所说的多态性(要有继承关系 2.子类要重写父类的方法 3.父类引用指向子类)
编辑于 2017-10-14 10:05:36 回复(1)
选AB
发表于 2018-07-17 10:08:56 回复(1)
覆盖你大爷
发表于 2022-01-06 13:21:38 回复(0)
多态的存在有三个前提: 1.要有继承关系 2.子类要重写父类的方法 3.父类引用指向子类https://www.zhihu.com/question/30082151
发表于 2017-08-04 07:40:44 回复(0)
之前看一个培训视频,里面说多态的三要素,继承,重写,父类引用指向子类对象, 没想到重载也是多态
发表于 2016-01-10 23:49:48 回复(4)
A,B
多态的两种方式:重载和覆盖
重载指在同一个类中一系列具有相同名字,不同参数类型和参数个数的方法
覆盖指在子类中重写父类的方法。
发表于 2015-04-03 14:20:26 回复(1)
重写,重载
发表于 2014-11-11 23:33:19 回复(1)

重载(Overload)是编译时的多态,因为根据调用传参的类型、数量便可决定调用的是哪个重载方法,因此并不需要推迟到运行时去决定调用哪个方法,所以它是编译期就能决定的。

重写(Override,又称覆盖)是运行时的多态,我们都知道重写的前提是类继承,重写的方法的名称、参数必须跟被重写的方法一致(异常列表、返回结果及访问修饰符等限制这里不赘述),因此无法通过方法参数决定调用的是哪个子类或是父类的方法只能在运行时通过传入的对象来动态决定

总结:不管是重载(Overload)还是重写(Override),都是实现Java动态机制的一种手段。



发表于 2022-04-04 11:18:18 回复(0)
通过子类对父类方法的覆盖实现多态
利用重载来实现多态,即在同一个类中定义多个同名的不同方法来实现多态。
发表于 2021-03-13 11:12:42 回复(0)
实现多态
父类引用指向子类对象
子类重写父类方法
发表于 2017-06-28 13:35:53 回复(0)
1:利用覆盖父类的抽象方法实现多态,例如不同类来实现同一个接口,相当于一个父亲多个儿子。
2:通过在同一个类中定义多个同名的不同实现方法来实现多态,相当于我可以根据传参来调用不同的方法,例如java中的很多类的构造函数。
发表于 2016-05-06 15:35:13 回复(0)
覆盖,运行时多态 重载,编译时多态
发表于 2022-02-25 19:28:03 回复(0)
        方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态 性,而后者实现的是运行
时的多态性。
        重载:发生在同一个类中,方法名相同参数列表不同(参数类型不同、个数不 同、顺序不同),与方法
返回值和访问修饰符无关,即重载的方法不能根据返回 类型进行区分
        重写:发生在父子类中,方法名、参数列表必须相同,返回值小于等于父类,抛 出的异常小于等于父
类,访问修饰符大于等于父类(里氏代换原则);如果父类 方法访问修饰符为private则子类中就不是重
写。
发表于 2022-01-27 13:37:56 回复(0)
Java通过方法重写和方法重载实现多态
方法重写是指子类重写了父类的同名方法
方法重载是指在同一个类中,方法的名字相同,但是参数列表不同
发表于 2021-11-02 20:55:37 回复(0)

借用下面一个兄弟的看法,思路很清晰!!!

多态分为 编译时多态 和 运行时多态 。其中 编辑时多态是静态的 , 主要是指方法的重载 ,它是根据参数列表的不同来区分不同的函数,通过编辑之后会变成两个不同的函数,在运行时谈不上多态。而 运行时多态是动态的 ,它是 通过动态绑定来实现的 ,也就是我们所说的多态性。
图片说明

编辑于 2021-10-08 00:13:02 回复(0)
发表于 2021-09-17 19:00:44 回复(0)
这个答案有问题吧,多态只有在继承才会有,重载怎么会是多态呢?
发表于 2021-03-07 09:31:09 回复(1)

方法重写一般在继承中,子类重写父类的方法,既然是重写一遍,那么方法名和参数部分一定是相同的。只是实现的功能不同。

访问修饰符范围要大于等于父类,因为子类重写父类方法是为了扩展父类的功能

返回值类型如果是基本数据类型和void类型,则必须相同。引用数据类型的话范围要小于等于父类

 

方法重载一般体现为构造器的有参无参,主要体现在方法参数的类型和数量不同,方法名相同,与访问修饰符和返回值类型都是无关的,

发表于 2020-03-30 11:57:30 回复(0)
重写父类的方法为运行时多态,即在运行的时候才能知道运行父类的方法还是子类重写后的方法。重载方法为编译时多态。
发表于 2019-09-27 00:25:27 回复(0)