java学习笔记-重写和重载(含代码)

tech2026-10-03  3

1.重写

重写(override):子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。代码如下;

class Student{ public void hobby(String h){ System.out.println("学生的爱好为" + h); } } class ZhangSan extends Student{ public void hobby(){ System.out.println("打篮球"); } } public class TestZhangSan{ public static void main(String args[]){ Animal a = new Student(); // Student对象 Animal b = new ZhangSan(); // ZhangSan 对象 a.hobby();// 执行Student类的方法 b.hobby();//执行ZhangSan类的方法 } }

输入结果为:

学生的爱好为***

打篮球

虽然a和b用的都是hobby方法,但是在ZhangSan类用了方法的重写,输出了张三的爱好:打篮球。

重载:

重载(overloading) :方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。

用法:方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数或参数的顺序不同的方法。Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同。调用方法时通过传递给它们的不同个数和类型的参数,以及传入参数的顺序来决定具体使用哪个方法。

public class TestOverloading { public int student(){ System.out.println("student1"); return 1; } public void student(int id){ System.out.println("student2"); } //以下两个参数类型顺序不同 public String student(int id,String name){ System.out.println("student3"); return "student3"; } public String student(String name,int id){ System.out.println("student4"); return "student4"; } public static void main(String[] args){ TestOverloading l = new TestOverloading(); System.out.println(l.student()); l.student(1); System.out.println(l.student(1,"student")); System.out.println(l.student("student4",1)); } }

这段代码的输出结果为:

JVM会自动识别,当输出无参方法时,JVM会自动选中第一个student方法,当输出有一个int参数的方法时,JVM会自动选中第二个student方法。后面都是一样的道理,小编就不再赘述啦。

 

最新回复(0)