java中为什么要重写(Java 语言中方法重写的本质)
大家好,今天小编来为大家解答以下的问题,关于java中为什么要重写,Java 语言中方法重写的本质这个很多人还不知道,现在让我们一起来看看吧!
JAVA在什么情况下需要方法重写
1.单实现一个接口,必须重写接口中的方法
(如果接口的方法和Object中的方法一样例外)
2.继承一个抽象类,必须重写抽象类中的抽象方法
(如果抽象类中的方法和Object中的方法一样例外)
3.继承了一个父类,当父类的方法无法满足子类需要时,
重写从父类继承过来的方法
重写方法:方法名必须一致,
而且必须保证保证参数类型,参数个数和返回类型一样
当然返回类型是对象类型时,重写方法返回类型可以是对象的子类类型
重写的方法访问权限不能更小,不能抛出更大的已检测异常,可以不抛
(要注意:父类没有抛已检测异常,子类就不能抛或者只能抛运行时异常)
这个是我个人总结比较精辟的
java 的“重载” 和“ 重写” 是怎么回事
重写是子类的方法覆盖父类的方法,要求方法名和参数都相同
重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同,最常见的重载的例子就是类的构造函数,可以参考API帮助文档看看类的构造方法
比如
File(File parent, String child)
File(String pathname)
File(String parent, String child)
File(URI uri)
这样就是重载,
而参数类型和个数不变,返回值也不变为重写
java为什么要重写hashCode和equals方法
因为默认的equals方法是Object的方法,比较的是内存地址;而默认的hashcode方法返回的是对象的内存地址转换成的一个整数,实际上指的的也是内存,两个方法可以理解为比较的都是内存地址,这在实际开发的过程中在hashmap或者hashset里如果不重写的hashcode和equals方法的话会导致我们存对象的时候,把对象存进去了,取的时候却取不到想要的对象,这时候就需要重写这两个方法了,一般可以根据业务的需求来重写;
Java 语言中方法重写的本质
1、在编译阶段,编译器只知道对象的静态类型,而不知道实际类型,因此只能在class文件中确定调用父类的方法。
2、在执行过程中,它将判断对象的实际类型。如果实际类型实现了这种方法,它将被直接调用。如果没有实现,它将根据继承关系从下到上进行检索。只要检索到,它将被调用。如果没有检索到,它将被抛弃。
例如下面代码中,Dog类是Animal类的子类,Dog类就重写了Animal类的 eat()方法,当调用Dog类的 eat()方法时,控制台会打印 eating bread...
关于java中为什么要重写和Java 语言中方法重写的本质的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。