概述
方法重载(overlode)
定义:在同一个类中定义的多个满足一定要求的同名方法就叫方法重载。
方法重载的要求:
方法与方法之间的名称相同,形参列表不同,与返回值类型无关。
注:此处的形参列表不同指的是形参的个数或者类型不相同,有的书上也说形参的顺序不同也可以构成方法重载,其实形参顺序不同的本质还是形参类型的不同。为了避免混淆在 实际使用中尽量保持返回值类型一致。
方法重载的作用:
方法重载通常命名一组功能相似的方法,利用方法重载可以使用同一个方法名对这些方法命名,对于程序的可读性有很大好处。在编译期间,编译器可以根据实参列表找到唯一与之对应的方法。
方法重载的举例:
System.out.println();
这个输出函数就是典型的方法重载,我们可以利用它打印各种类型不同个数的值。若没有方法重载,每一种类型都对应一个输出方法岂不是很麻烦!
方法覆写(方法重写)(overrride)
定义:在继承的基础上如果子类与父类定义了完全相同的方法就叫做方法覆写。
方法覆写的要求
1.相同指的是:返回值类型相同,方法名相同,方法的形参列表(个数和类型)也相同。与方法体无关。
2.子类的方法修饰符不能小于父类的方法修饰符。
3.若父类方法抛异常,则子类方法抛的异常类型不能大于父类。(考虑面向对象的特征,一代应该比一代强)
4、静态方法不能被覆写
访问权限由高到底依次为:
public > protected >缺省(default)>private。
方法覆写的作用
方法覆写可以实现在子类中对父类的方法进行改写,使其更适合于本类对象。而且不用再重新为方法想名字。例如圆柱类继承了圆这个类,在圆类中有计算面积的方法,对圆柱并不适用,必须覆写。
但如果父类中的方法是pivate 修饰的则不满足覆写条件: 若父类的方法被private修饰则在子类中定义的同名方法算是一个新方法与父类中用private修饰的方法无关。方法覆的原理其实就是同名覆盖。
方法覆写的实例
class Person
{
private String name;
private int age;
public void fun()
{
System.out.println("1.Person类的方法");
}
}
class Student extends Person
{
private String school;
public void fun()
{
System.out.println("2.Student类的方法");
}
}
public class Test
{
public static void main(String[] args)
{
Student stu = new Student();
stu.fun();
}
}
输出结果:
规则:看new的哪个对象,该对象调用的方法有没有被覆写,如果被覆写则一定调用覆写后的方法。
发生转型后的覆写输出:
class A
{
public void fun()
{
System.out.println("hehe");
}
}
class B extends A
{
public void fun()
{
System.out.println("haha");
}
}
public class Test
{
public static void main(String[] args)
{
A a = new B(); //向上转型
B b = (B) a; //向下转型
a.fun();
b.fun();
}
}
输出结果:
方法重载与方法覆写的区别:
1.范围不同: 覆写是发生在含有继承关系的多个类之间,而重载是在同一个类中的方法与方法之间。
2方法个数不同: 覆写是发生在一个方法或者说是一对方法之间,而重载是发生在多个方法之间。
3.参数要求: 覆写要求参数列表相同,重载要求参数列表不同。
4.修饰符限制: 覆写要求子类中覆写的方法不能拥有比父类被覆写的方法更为严格的访问控制权限,重载对访问修饰符没有要求。
5与final的关系: 被final修饰的方法不能被覆写,但被final修饰的方法可以被重载。
6与static的关系: static修饰的方法不能被重写(可以被继承),不能被重载。
最后
以上就是沉静羽毛为你收集整理的Java学习总结------方法重载与方法覆写的全部内容,希望文章能够帮你解决Java学习总结------方法重载与方法覆写所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复