• 技术文章 >Java >Java入门

    java重载与重写的区别

    (*-*)浩(*-*)浩2019-11-11 09:30:30原创9739

    重写(Override) (推荐学习:java课程

    从字面上看,重写就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。

    例如:

    public class Father {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Son s = new Son();
            s.sayHello();
        }
        public void sayHello() {
            System.out.println("Hello");
        }
    }
    class Son extends Father{
        @Override
        public void sayHello() {
            // TODO Auto-generated method stub
            System.out.println("hello by ");
        }
    
    }

    重载(Overload)

    在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载。

    例如:

    public class Father {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Father s = new Father();
            s.sayHello();
            s.sayHello("wintershii");
        }
    
        public void sayHello() {
            System.out.println("Hello");
        }
        public void sayHello(String name) {
            System.out.println("Hello" + " " + name);
        }
    }

    面试时,问:重载(Overload)和重写(Override)的区别?

    答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。

    重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。

    重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

    以上就是java重载与重写的区别的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:java
    上一篇:python与java区别 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • java 下载网页,图片• java怎么使用redis• linux服务器java输出文件中文乱码• java显示1秒前,1分钟前,2分钟前,3天前
    1/1

    PHP中文网