失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Java中方法的重写(overriding)和重载(overloading)的区别

Java中方法的重写(overriding)和重载(overloading)的区别

时间:2020-06-14 08:45:40

相关推荐

Java中方法的重写(overriding)和重载(overloading)的区别

Java中方法的重写(overriding)和重载(overloading)

重写

在子类中可以根据需要对从父类中继承来的方法进行改造,也称为重置、覆盖。

在子类中创建一个和父类中的一个相同名字、相同参数的方法,进行覆盖操作,此时在程序执行的时候,子类的方法将覆盖父类的方法

代码举例:

//创建一个Person类public class Person {int age; //年龄String name; //姓名//work方法public void work(){System.out.println(name+"都要努力地工作");}}

//接着创建一个Studen类继承Person类,并重写了work方法public class Student extends Person{//重写了work方法public void work(){System.out.println(name+"还不行,学生得读书");}}

此时我们分别new一个Person对象和Student对象,调用work方法测试一下

public static void main(String[] args) {//Person对象Person x = new Person();//Student对象Student y = new Student();x.name="上班族";y.name="学生";//调用work()方法x.work();//分隔符System.out.println("----------------------------------");y.work();}

运行结果如下:

重写以后,当创建子类对象以后,通过子类对象调用父类中的同名同参数的方法时,实际执行的会是子类重写过后的方法

注意

1.子类重写的方法必须与父类被重写的方法,方法名和形参列表相

2.子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符

>>>>>特殊情况:子类不能重写父类中生命为private权限的方法

3.返回值类型:

>>>>>>父类被重写的方法返回值是void,则子类也必须为void

>>>>>>父类被重写的方法返回值是A类,则子类返回值为A类或A类下的子类

>>>>>>父类被重写的方法返回值是基本数据类型,则子类也必须为相同的基本数据类型()

>>>>>>子类重写的方法异常类型不大于父类被重写的方法抛出的异常类型

重载

重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

最常用的地方就是构造器的重载。

代码举例

//创建一个Person类public class Person {int age;String name;//空参的work()方法public void work(){System.out.println("没工作,在家当废物");}//有参数的work方法public void work(String job){System.out.println("你的工作是:"+ job);}}

运行测试:

public static void main(String[] args) {//创建对象Person x = new Person();//调用空参的测试x.work();//分隔符System.out.println("---------------");//传入参数测试x.work("teacher");}

运行结果

重载的方法和返回值类型无关,只看参数列表,且参数列表必须不同(参数个数不同或参数类型不同),当对象调用方法的时候回根据传入的参数不通来自动调用指定的方法

总结

重写与重载的区别:

方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。

(1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。

(2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。

(3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

如果觉得《Java中方法的重写(overriding)和重载(overloading)的区别》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。