重写与重载的区别
2019-10-14 23:55
579 查看
重载(Overload):编译时的多态性
指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。
特点:
- 方法名相同,==参数列表不同==(参数个数,参数类型,参数顺序)
- 返回值类型可以相同可以不同
- 可以抛出不同的异常
应用:
多用于构造方法的重载
class OverloadTest{ //重载时参数顺序不同也可以,但前提时参数类型不同 public static void method(String s,int a){ System.out.println("方法1"); } public static void method(int a,String s){ System.out.println("方法2"); } //构造方法的重载应用较多 OverloadTest(int v,String s){ System.out.println("构造方法1"); } OverloadTest(String s,int v){ System.out.println("构造方法2"); } }
重写(覆写,Override):运行时的多态性
当子类继承父类后,如果想要修改,可以用方法的重写
特点:
- 方法名,参数列表相同
- 返回值类型相同
- 访问限定符不可以比父类的被重写方法的更严格,即子类的重写方法被访问的范围与父类相同或者更广,不可以更窄
- 不可以抛出新的受查异常或更广泛的受查异常,可以抛出非受查异常
- 不可以重写被final修饰的方法
- 不可以重写被static修饰的方法
应用:
子类需要修改继承自父类的方法时应用
class OverrideTest{ public void method(){ System.out.println("父类的方法"); } } class Son extends OverrideTest{ @Override//子类重写父类方法时可以加上这个注解,自动帮你校验重写格式是否正确 public void method(){ System.out.println("子类重写的方法"); } public static void methodB(){ System.out.println("子类的方法"); } } public class OverrideOrOverloadDemo { public static void main(String[] args) { new OverrideTest().method(); new Son().method(); OverrideTest ot = new Son(); // ot.methodB();//以引用为准,引用为OverrideTest,该类中的没有方法methodB(),因此会报编译错误 ot.method();//当子类重写了父类的方法时,调用子类的重写的方法 } }
运行结果:
相关文章推荐
- java中方法的重载与重写的区别
- Java中重载和重写的区别
- java重载和重写的区别(转)
- 重写、覆盖、重载、多态几个概念的区别
- 黑马程序员---java 重写与重载的区别
- C++中重载与重写函数区别及虚函数
- 重载和重写的区别
- Java 重写与重载方法与区别详解
- 隐藏(new)和方法重写(override)和重载(overload)的区别
- java基础の重载和重写区别和联系
- JAVA 中容易混淆的重写与重载的区别
- 重写、覆盖、重载、多态几个概念的区别分析
- 方法重载和方法重写的区别
- C++ 重写重载重定义区别
- 关于方法的重载和重写的区别
- Java中重载(Overload)和重写的区别(Override)和使用方法
- (2) java中Object类源码 以及 equals hashcode ==三者区别联系 以及权限修饰符 以及重写和重载
- overload(重写)和override(重载)的区别
- 重载与重写的区别
- 重载,继承,重写和多态的区别