概述
一、方法的重写概念
之前说了子类富国继承了一个父类,那么子类就会拥有父类的方法(不包括构造方法)和属性,此时如果在子类中定义了一个和父类一样的方法,这种现象叫做子类覆写(重写)了父类的方法。
重写父类方法
public class Person {
public void getInfo() {
System.out.println("这是Person类中的getInfo方法");
}
}
public class Student extends Person{
//定义一个和父类Person一样的getInfo方法
public void getInfo() {
System.out.println("这是Student类中的getInfo方法");
}
}
public class Hello {
public static void main(String[] args) {
//实例化一个子类对象
Student s= new Student();
s.getInfo();
}
}
这是Student类中的getInfo方法
发现了调用的是子类中的方法,就是说子类的getInfo()覆盖了父类的getInfo()方法,其实上在调用的时候先在子类中查找调用的方法,如果有则直接调用,如果没有就往父类中和查找,如果最终都没有找到,则编译不通过。
实现覆写需要哪些要求
1.要求子类的方法名称和父类的一致,而且参数列表要一致。
public class Person {
public void getInfo() {
System.out.println("这是Person类中的getInfo方法");
}
}
public class Student extends Person{
//定义一个和父类Person一样的getInfo方法
public void getInfo(String name) {
System.out.println("这是Student类中的getInfo方法");
}
}
public class Hello {
public static void main(String[] args) {
//实例化一个子类对象
Student s= new Student();
s.getInfo();
}
}
这是Person类中的getInfo方法
在主方法调用了getInfo()方法,会在Student类中查找该方法,但是Student类中没有这个无参数的getInfo()方法,所以往父类中查找,最后就调用了父类的getInfo()。
2.如果子类的方法的访问权限和父类的方法的访问权限不同呢?
public class Person {
public void getInfo() {
System.out.println("这是Person类中的getInfo方法");
}
}
public class Student extends Person{
//定义一个和父类Person一样的getInfo方法
private void getInfo() {
System.out.println("这是Student类中的getInfo方法");
}
}
Cannot reduce the visibility of the inherited method from Person
子类中重写的方法的访问权限只能比父类的大,不能比父类的小,也就是说子类重写的方法不能拥有比父类更为严格的权限。
正常开发访问权限都是一样的。
3.如果子类覆写的方法和父类的方法返回值不一样呢?
如果父类方法和子类覆写的方法的访问权限一样则返回值必须一致,如果访问权限不一样则返回值可以不一致。(正常开发中返回值和访问权限都是一致的)
面试题:
请说明重载和重写的区别?
【重载】
1.发生在一个类中
2.对返回值没有要求(但是正常都会保持一致)
3.对访问权限没有要求(但是正常都会保持一致)
4.表示重载的单词是 overloading
【重写】
1.发生在继承关系中(子类和父类)
2.子类不能拥有比父类更小的访问权限
3.如果子类和父类访问权限一致则返回值必须要相同,否则可以不同
4.表示重写的单词是 override
总结:
1.方法重写的概念
2.方法重写的要求
3.如果子类覆写了父类的方法,那么在调用的时候优先调用子类的方法
最后
以上就是沉默大地为你收集整理的方法的覆写【重写】一、方法的重写概念重写父类方法实现覆写需要哪些要求1.要求子类的方法名称和父类的一致,而且参数列表要一致。2.如果子类的方法的访问权限和父类的方法的访问权限不同呢?3.如果子类覆写的方法和父类的方法返回值不一样呢?面试题:总结:的全部内容,希望文章能够帮你解决方法的覆写【重写】一、方法的重写概念重写父类方法实现覆写需要哪些要求1.要求子类的方法名称和父类的一致,而且参数列表要一致。2.如果子类的方法的访问权限和父类的方法的访问权限不同呢?3.如果子类覆写的方法和父类的方法返回值不一样呢?面试题:总结:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复