一,重载(Overload)
1,含义
只发生在一个类中,方法名相同,参数列表和个数至少一个变了。
返回值的类型也可以不同,无法根据返回值类型来判断一个方法是不是重载方法。
2,应用
重载最常用的地方就是构造器的重载。
例如
public Student( )//无参构造
{
}
public Student(int cj,String name)//有参构造
{
this.cj=cj;
this.name=name;
}
//无参构造和有参构造就是最常见的重载
这是书上一个经典的重载,我修改了一下
如下
public Time1(int h)//有一个参数
{
setTime(h,0,0);
}
public Time1(int h,int m)//有两个参数
{
setTime(h,m,0);
}
public Time1(int h,int m,int s)//有三个参数
{
setTime(h,m,s);
}
public Time1(int h,int m,int s,String day)//有四个参数
{
setTime(h,m,s);
System.out.println(day);
}
//只发生在一个类中,方法名相同,参数列表和个数至少一个变了
二,重写(Override)
1,含义
重写是子类对父类之间,方法体重新编写, 形参列表和个数不能改变,
重写方法的返回值类型比原方法的返回值类型小即可。
ps:
父类的成员方法只能被它的子类重写。
声明为 final 的方法不能被重写。
声明为 static 的方法不能被重写,但是能够被再次声明。
2,应用
最常见的重写是toString( )的重写,继承object中的方法。
public String toString()
{
return "名字:"+name+"年龄:"+age;
}
重写自己定义的父类的方法
public class Staff
{
public void time()//父类方法
{
System.out.println("员工9点之前到岗");
}
}
class Manager extends Staff
{
public void time()//在Manager中重写
{
System.out.println("管理层9点之前到办公室");
}
}
class Clerk extends Staff
{
public void time()//在Clerk中重写
{
System.out.println("部门职员9点之前到部门");
}
}
class Test1
{
public static void main(String[] args)
{
Staff a=new Staff();
Staff b=new Manager();//定义了一个Staff类型的Manager
Staff c=new Clerk();//定义了一个Staff类型的Clerk
a.time();b.time();c.time();
}
}
运行结果如下