Java中的重载和重写区别
来源:互联网 发布:江南大学网络教育平台 编辑:程序博客网 时间:2024/06/06 08:47
1.重载(overload)
java中的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同参数列表(不同表现在参数个数和参数类型上)。也可以在子类中重载父类方法。需要注意的是,不能仅仅通过返回值不同来实现重载(注意“仅仅”两字)。
2.重写(override)
若子类中的某一方法和父类中的某一方法具有相同的方法名、返回类型和参数列表,则新方法将覆盖父类中的方法。此时如果new出来的是子类对象,不管引用是父类还是子类,调用该方法时执行的都是覆盖后的方法。另外,可以通过添加@Override注解来检测重写,若未能正确重写父类方法,则编译器会报错。示例代码:
- class Super{
public void a(){
}
public void a(int a,int b){ //一般的重载
}
public int b(){
return 0;
}
/*public long b(){ //编译错误,不能仅仅通过返回类型不同来进行重载
return 1;
}*/
public long b(int a){ //编译通过,因为参数列表不同,满足重载条件,此时返回类型可任取
return 1;
}
}
class Child extends Super{
public int a(int a,int b,int c){ //子类通过不同的参数个数重载父类方法
return 2;
}
public long b(String a){ //子类通过不同的参数类型重载父类方法
return 2;
}
@Override
public int b(){ //子类重写父类方法
return 3;
}
public int superb(){ //显示调用父类中被覆盖的方法
return super.b();
}
/*@Override
public int b(int a, int b){ //编译不通过,因为没有按照要求来重写父类方法,此处其实只是在进行重载
return 4;
}*/
}
public class Test {
public static void main(String[] args) {
Super sup = new Super();
Super sup2 = new Child();
Child child = new Child();
System.out.println(sup.b()); //创建的是父类,调用的仍然是父类的方法
System.out.println(sup2.b()); //父类引用子类,调用的是子类覆盖后的方法(这就是List对象
//能够正确调用ArrayList类重写后的方法的原理)
System.out.println(child.b()); //创建的是子类,调用的是子类覆盖后的方法
System.out.println(child.superb()); //在子类中显式的调用被覆盖的父类方法
}
}
/* 输出: 0 3 3 0
其中0是父类方法的返回值,3是子类重写后的方法的返回值
*/
阅读全文
0 0
- Java中的重载和重写区别
- Java中的重写和重载区别
- java 重载和重写区别
- java中的重载和重写
- Java中的重载和重写
- java中的重写和重载
- Java中的重载和重写
- java中的重载和重写
- Java中的重写和重载
- Java中的重写和重载
- java中的重写和重载
- Java中的重写和重载
- Java中的重写和重载
- 弄清java中的函数重载和函数重写的区别。
- java中的重写(覆盖)及和重载区别
- java中的重载与重写的区别
- c#中的重载和重写区别
- c#中的重载和重写区别
- HDU 1869-六度分离(floyd)
- openjudge 2663 完美覆盖(规律)
- iOS中时间与时间戳的相互转化(iOS10中 其他方法好像没什么用呀)
- NOIP2016提高组解题报告
- 用Python写网络爬虫
- Java中的重载和重写区别
- HDU 1237-简单计算器
- czl蒻蒟的一周总结(9.4~9.10)
- CSS脱离文档流
- JQuery判断表单格式
- 构建模式 Builder
- CCD类详解
- 利用U盘安装Redhat-server-Linux-7.1
- PAT (Advanced) 1008. Elevator (20)