永发信息网

JAVA中的多态与重载有什么区别?

答案:4  悬赏:70  手机版
解决时间 2021-02-08 08:14
  • 提问者网友:了了无期
  • 2021-02-07 14:10
JAVA中的多态与重载有什么区别?
最佳答案
  • 五星知识达人网友:神的生死簿
  • 2021-02-07 14:39
多态性
通过继承,一个类可以用作多种类型:可以用作它自己的类型、任何基类型,或者在实现接口时用作任何接口类型。这称为多态性

重载
每个类型成员都有一个唯一的签名。方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。只要签名不同,就可以在一种类型内定义具有相同名称的多种方法。当定义两种或多种具有相同名称的方法时,就称作重载。即重载时相同名称成员的参数列表是不相同的(参数顺序和类型)。

继承,重写和隐藏成员
派生的类型继承其基本类型的所有成员;也就是说,这些成员是在派生类型之上定义的,并可用于派生类型。继承成员的行为和质量可以通过以下两种方式来修改:

1、派生类型可通过使用相同的签名定义一个新成员,从而隐藏继承的成员。将先前的公共成员变成私有成员,或者为标记为 final 的继承方法定义新行为时,可以采取这种方法。

2、派生类型可以重写继承的虚方法。重写方法提供了对方法的一种新定义,将根据运行时的值的类型,而不是编译时已知的变量类型来调用方法。只有当虚方法没有标记为 final 且新方法至少可以像虚方法一样进行访问的情况下,成员才能重写虚方法。
方法名,参数相同形成重写,重写的方法不能降低原方法的"可见度",也不能改变原方法的返回值类型。

方法名相同,参数不同(个数、类型)形成重载,重载的方法可看成一个全新的方法,与原方法相比它可以有不同的"可见度"和“返回值类型”。如下例:

class A {
protected int method1(int a, int b) { return 0; }
}
public class B extends A{
public int method1(int a, int b) { return 0; } //正确,重写父类方法,可以扩大访问权限
//private int method1(int a, int b) { return 0; } //错误,重写父类方法,不能降低了访问权限
//private long method1(int a, int b) { return 0; } //错误,重写父类方法,不能改变返回值类型
public short method1(int a, long b) { return 0; }//正确,重载自身的方法,可以有不同的访问权限和返回值类型
private int method1(int a, long b) { return 0; }//正确,重载自身的方法,可以有不同的访问权限和返回值类型
}

但这里 方法public short method1(int a, long b) { return 0; }和 方法private int method1(int a, long b) { return 0; }不能同时存在,因为在同一类中,不允许存在相同名字和参数类型的方法(重写的方法)。
全部回答
  • 1楼网友:夜风逐马
  • 2021-02-07 18:00
oop的基本特征:抽象,多态,继承,封装. 多态的表现,方法的重写 重载 重写是针对继承而言的,子类如果有方法名称与父类名称相同,而且参数一样,这就是说子类重写了父类的方法,当你调用子类的这个方法时,就如同屏蔽了父类的方法. 重载就是针对一个类而言,如果一个类中有多个方法名称一样,参数也一样,就是方法的重载,返回值不影响方法的重载
  • 2楼网友:青尢
  • 2021-02-07 17:25
java中 多态 的体现主要就是 重载 重写。 重载就是同一个类中,方法名相同,可方法所带的参数的 类型 或者 个数 不同,一般都是构造方法的重载。 通俗一点就比如说:同一个碗(相当与方法名),可以盛 饭,水,牛奶 (如同参数)。 重写 一般是父类跟子类的关系,子类 把 父类的方法覆盖了。彻底的变了
  • 3楼网友:逐風
  • 2021-02-07 16:08
多态是建立在重写的基础之上的,是类与类之间的关系,是发生在不同的类之间的,子类重写父类的方法。实现不同的子类,不同的实现形态。 多态有3个条件 1:继承 2:重写(重写父类继承的方法) 3:父类引用指向子类对象 而重载是类的内部的方法构型上的不同,是发生在同一个类里面的。同一个函数名称,参数不同的多个方法,实现同一类型的功能。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯