Java中的重载、重写和隐藏

一、重载(Overload)

注意:为了正确的区分重载和重写,请各位务必记清重载(Overload)和重写(Override)的英文。

(1)重载定义:表示两个或多个方法的名字相同,但方法的参数不同。方法参数不同有两层含义:A、参数的个数不同;B、参数的类型不同。

	public void run(String name, int count)
	{
		System.out.println(count + " " + name + " " + "are running.");
	}

	public void run(int count, String name)
	{
		System.out.println(count + " " + name + " " + "are running.");
	}

请思考以上两个方法是否构成了重载?

(2)重载发生的时机:重载是发生在同一个类内部的两个或多个方法之间。

(3)方法的返回类型对重载没有任何影响!即,对于方法名字和参数都相同的两个方法,如果他们的返回类型不同,这种语法格式是错误的,大家可以试一试。那么,也就是说,只要是重载返回类型一定相同。否则为两个不同的方法。如下代码,这是两个不同的方法。

	public void run()
	{
		System.out.println("dog is running");
	}

	public int run(String name, int count)
	{
		System.out.println(count + " " + name + " " + "are running.");
		return 1;
	}

(3)构造方法之间的重载:一个类中有多个构造方法,那么它们一定是重载的。

(4)重载方法之间的调用:对于普通方法的重载,重载的方法之间是可以直接调用的,如下代码一。

但是对于重载的构造方法之间的调用,需要使用this()关键字。A、this()括号中参数表示目标构造方法所接收的参数;B、对this()的调用必须是构造方法的第一条语句。如下代码二。

	public int run(String name, int count)
	{
		System.out.println(count + " " + name + " " + "are running.");
		return 1;
	}
	public void run(int count, String name)
	{
		run(name , count);
		System.out.println(count + " " + name + " " + "are running.");
	}
	public Dog()
	{
		this("金巴");
		System.out.println("你好世界,我是一条狗!");
	}
	public Dog(String name)
	{
		System.out.println("你好世界," + "我是一条" + name + "狗!");
	}
二、重写(Override)

(1)重写定义:子类与父类的方法的返回类型一样,方法名称一样,参数一样,这样我们就说子类与父类的方法构成了重写关系。

 补充:在重写中,我们一直没提到权限的问题(public、protected、private),使用private修饰的方法是不能够进行重写的,也不能够被继承,所以private和多态扯不上关系。在同一个包下,构成重写关系,父类和子类的方法,权限可以是public和public、protected和protected、protected和public,但不可能是public和protected,即权限可以扩大但不可缩小。

(2)重写发生的时机:重写发生在父类与子类之间。

(3)构造方法时不能重写的,如果您理解是构造方法的作用,就知道构造方法为什么不能重写。

(4)在重写时,子类重写的方法调用父类被重写的方法时,可以使用super.父类方法的方式调用,其中此语句不必放在第一行。如下代码所示:

class Animal
{
	public void run()
	{
		System.out.println("animal is running");
	}
}
class Dog extends Animal
{
	//override
	public void run()
	{
		System.out.println("dog is running");
		super.run();
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值