方法重写(override)和方法重载(overload)的区别

1.什么是方法的重载?

        重载的存在是为了解决调用方法时,出现方法名不同,但参数列表不同的情况,比如类的构造方法就常用到方法的重载,调用构造方法创建对象时,传入不同的参数就可以方便的对属性赋值或者不赋值。

2.什么是方法的重写?

        重写的存在是为了解决子类调用父类的方法时,对父类的方法的得到的结果不满意,想拥有自己想要的结果,就对父类的方法进行了重写。

3.方法的重载和方法的重写有什么区别?

    两同三不同:方法的重载是在同一个类中,同一个方法名,具有不同的参数类型,参数个数和参数顺序。与返回值无关。

                例如以下代码:Person类中的构造方法用到了方法的重载

        public Person(){}
	public Person(String name, int age, char gender){
		this.name = name;
		this.age = age;
		this.gender = gender;
	}

    两同三不同:方法的重写具有同一个方法名,同样的参数列表。

                              返回值类型可以不同(基本类型是一致的,引用类型可以不同,比如父类方法返回值类型是Object,子类方法是Student类,子类类型<=父类类型--多态性);

                                  异常类型不同,比如父类方法类型是Exception,子类方法类型是RuntimeException,子类类型<=父类类型--多态性

                                  权限修饰符不同,比如父类方法权限修饰符是default,子类方法权限修饰符是public,子类类型>=父类类型

扫描二维码关注公众号,回复: 1816174 查看本文章

        例如如下代码

                     父类Person类的sleep()方法

protected Object sleep() throws Exception{
		System.out.println("这是sleep方法。。。");
		return null;
	}

                        子类Student类重写了父类的sleep()方法

public String sleep() throws RuntimeException{
		System.out.println("学生的sleep方法。。。");
		return null;
	}

总结:一般情况下,对于方法的重写,要求都一致。

猜你喜欢

转载自blog.csdn.net/sunming0129/article/details/79763027
今日推荐