0
点赞
收藏
分享

微信扫一扫

重写与重载

boomwu 2022-04-15 阅读 93
java

一,重载(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();
	    }
	}

运行结果如下
在这里插入图片描述

举报

相关推荐

0 条评论