欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java基础学习菜鸟入门第十二天——Java面向对象(六)方法的重写

程序员文章站 2024-03-17 08:05:46
...

Java面向对象——方法的重写

4.2方法的重写

4.2.1方法重写的条件

  • 一定要发生继承关系
  • 子类中的方法和父类中的方法同名
  • 参数列表要一模一样
  • 返回值类型一模一样

(对于目前阶段知识量来说,这些是重写的条件,后续可能会有改动)

4.2.2为什么要方法的重写?

  • 在子类继承父类之后,不满足父类提供的功能,子类对于父类继承过来的某些方法可以进行重写(覆盖)。
  • 对于父类的一些行为进行扩展

4.2.3方法重写的方式

代码演示:

public  class Person{
    String name;
    int age;
 	public Person(){
        System.out.println("父类的空构造器");
	}
	public int info(int num){
        System.out.println("姓名:"+this.name+",年龄:"+this.age);
        return 1;
	}
}
 public class Student extends Person{
	int id;
	public Student(){
        System.out.println("子类的空构造器");
	}
     //方法的重写
	@Override//注解
	public int info(int num){
        System.out.println("姓名:"+name+"年龄:"+age+"学号:"+id);
        return 1;
	}
}
public class Test01{
	public static void main(String[] args){
		//1:创建一个学生对象
		Student stu=new Student();
		stu.name="小莉李";
        stu.age=18;
        stu.id=1;
		//2:调用对象的功能
		stu.info(1);
    }
}
  • 如何判断父子关系下的两个类中的同名方法是否是重写:
    • 在子类的同名方法上添加注解@Override,如果方法不报错,那么该方法是重写方法,反之则不是。

上述代码内存分析:

Java基础学习菜鸟入门第十二天——Java面向对象(六)方法的重写

上述代码运行结果
父类的空构造器
子类的空构造器
姓名:小莉李年龄:18学号:1
  • 调用子类对象的功能以及属性的时候,先在当前本类对象中进行查找,如果找到了则执行,如果没有找到去父类中进行查找。沿着继承链会一直往上找。

4.2.4方法重写中的this和super注意事项

//上述代码中的一部分
@Override
public int info(int num){
	System.out.println("姓名:"+name+"年龄:"+age+"学号:"+id);
	super.info(1);
	//this.info(1)会出问题
	return1;
}

**注意:**对于上述代码中的this.和super.不能混淆使用,原因是由于对于this.info(1)而言。调用的当前子类对象的方法,所以程序会成为一个死循环,一致无法退出。但是如果要调用父类的info()方法,需要通过super.去指向。