Java 中构造器重载,方法重载和方法重写区别

开发工具与关键技术:Java
作者:吴永旗
撰写时间:2019年4月25日

  1. 什么构造器重载?
    构造器重载名字相同,而形参列表一定不同或者形参列表次序不同,构造器名和类名相同,并且没有返回值
    例子如下:
    public class Dog {
    public Dog(){//类名 Dog作为构造器名
    System.out.println(“无参构造方法”);
    }
    public Dog(String name,int age){//类名 Dog作为构造器名,带有参数
    System.out.println(“参构造方法1”);
    }
    public Dog(int age,String name){//类名 Dog作为构造器名,带有参数,次序不同
    System.out.println(“参构造方法2”);
    }
    }

  2. 认识什么是方法重载和方法重写
    方法重载:一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同 而类型和次序不同,则称为方法的重载(Overloading)。
    方法重写:在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一 样,返回值也一样的方法,就称为方法重写(Overriding)。

  3. 方法重载的规则有哪些?

  4. 必须形参列表不一样(参数个数或类型不一样);

  5. 可以改变返回类型

  6. 可以改变访问修饰符

  7. 可以声明新的或更广的检查异常

  8. 法能够在同一个类中或者在一个子类中被重载。

  9. 返回值类型不能作为重载函数的区分标准。

  10. 方法重写的规则有哪些?

  11. 参数列表必须完全与被重写方法的相同

  12. 返回类型必须完全与被重写方法的返回类型相同

  13. 访问权限不能比父类中被重写的方法的访问权限更低,例如,父类方法被声明public修饰,则子类重谢该方法是不能声明为protected

  14. 父类的成员方法只能被它的子类重写

  15. 声明为final的方法不能被重写

  16. 声明为static的方法不能被重写,但是能够被再次声明

  17. 子类和父类在同一个包中,那么子类可以重写父类所有除了声明为private和final 的方法

  18. 子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和 protected的非final方法

  19. 重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常

  20. 构造方法不能被重写

  21. 如果不能继承一个方法,则不能重写这个方法

  22. 重写与重载之间的区别
    区别点 重载方法 重写方法
    参数列表 必须修改 一定不能修改
    返回类型 可以修改 一定不能修改
    异常 可以修改 可以减少或删除,一定不能抛出新的或者更广的异常
    访问 可以修改 一定不能做更严格的限制(可以降低限制)

  23. 方法的重载示例如下:
    public class Dog{
    public void dog(){
    System.out.println(“这是重载的方法1”);
    }
    public String dog(){
    System.out.println(“这不是一个重载的方法”);
    }
    public void dog(String name){
    System.out.println(“这是一个重载的方法2”);
    }
    public void dog(String name){
    System.out.println(“这不是一个重载的方法”);
    }
    public void dog(String name,int age){
    System.out.println(“这是一个重载的方法3”);
    }
    public void dog(int age ,String name){
    System.out.println(“这是一个重载的方法4”);
    }

  24. 方法的重写示例如下:
    Java 中构造器重载,方法重载和方法重写区别Java 中构造器重载,方法重载和方法重写区别