首页 >Java >Java入门 > 正文

java重载与重写的区别

原创2019-11-11 09:30:3007905

重写(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中文网其它相关文章!

php中文网最新课程二维码
  • 相关标签:java
  • 本文原创发布php中文网,转载请注明出处,感谢您的尊重!
  • 相关文章

    相关视频


    网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
  • java:1、是指不同函数使用相同函数名,但是函数参数个数或类型不同。是指在派生类中新对基类中虚函数新实现。2、两者关系不同。3、两者对参数列表要求不同。
    :1、必须具有不同参数列表,参数列表必须方法相同;2、可以有不同返回类型,返回类型必须方法返回类型相同。
    java”中“collection”接口中“set”接口“list”接口是:“list”接口“set”接口是是否允许复元素存在,在“list”接口中允许插入元素,而
    本文来自java入门程序栏目,文中为大家介绍了java中热加热部署,具有一定参考价值,希望可以帮助到大家。热部署是在服务器运行时新部署项目,热加是在运行时新加class。
    PHP和Java语法:1、Java里有8种基本数据类型,和对应引用类型,PHP没有引用类型;2、Java中一个类下面有方法,PHP只能父类方法;3、Java中有内部类概念,PHP没有
    java”方法中构造方法普通方法是:一、构造方法名字必须定义它类名完全相同;二、构造方法在初始化对象时自动执行;三、构造方法可以被;四、构造方法不能被“static”等关键字修饰。
    java中方法覆盖也称为,即子类新定义了父类方法。需要注意是:1、方法一定要原方法有相同方法名、参数列表和返回值类型;2、被方法不能是final类型。
    java接口继承:1、两者使用不同修饰符修饰。2、JAVA中不支持多继承,但是可以用接口来实现。3、继承只能继承一个类,但implements可以实现多个接口。
    linux装系统方法是:1、准备一台有【/data】分虚拟机;2、加ISO,装系统,保留【/data】分;3、新分;4、给系统增加磁盘;5、将新增磁盘设置为LVM模式;6、将新增创建为物理卷
    Java中方法是指:两个方法方法名相同,但参数类型、参数个数不一致,那么就可以说一个方法是另一个方法。在方法中,方法返回类型方法修饰符也可以不相同。
    a.equals(b) 有什么关系?字节流字符流。什么是java序列化,如何实现java序列化?或者请解释Serializable接口作用。描述一下JVM加class文件原理机制?
    java面试题有:什么是ORM?Hibernate中SessionFactory是线程安全吗?阐述Session加实体对象过程;MyBatis中使用#和$书占位符有什么?。
    c语法java语法:C可用标识符为数字、大小字母、下划线,不能以数字开头;Java可用标识符除了C三种以外,多一种美元符号($),同样不能以数字开头。布尔类型Java中才有,需特注意。
    docker save和docker export:1、docker save保存是镜像,docker export保存是容器;2、docker load用来入镜像包;3、docker load

    2020-03-11

    1072

    yii2tp5:1、yii多配置文件,覆盖配置,多环境配置,分本地线上环境配置,tp只有一种;2、yii里面很多页面控件,如list/grid/detail等,tp没有。
    控制反转依赖注入有:依赖注入从应用程序角度来描述,而控制反转是从容器角度描述;控制反转侧于原理,而依赖注入侧于实现。
    :程序员主要是指代码人,而工程师着在于设计。软件工程师不但要有编程序代码能力而且更是要懂得如何去开发一个软件,怎样去学习实际UI观念。
    listset有:list可以允许复对象和插入多个null值,而set不允许;list容器是有序,而set容器是无序等等。
    ​GC(Garbage Collection)是java垃圾回收机制,是JavaC++/C主要之一,在使用JAVA时候,一般不需要专门编内存回收和垃圾清理代 码。
    让linux不分大小方法是:1、首先加【mod_speling】模块;2、然后在【httpd.conf】文件中添加【CheckSpelling on】,开启模块;3、最后启apache即可。

    专题推荐

    作者信息
    推荐视频教程
  • 马士兵JAVA坦克游戏视频教程马士兵JAVA坦克游戏视频教程
  • 尚学堂java开发聊天室视频教程尚学堂java开发聊天室视频教程
  • 魔乐科技java五子棋视频教程魔乐科技java五子棋视频教程
  • 最新Java完整视频教程最新Java完整视频教程
  • 视频教程分类