Java小白记录学习路线(java基础)-----详细分析重写和重载

方法的重写和重载

重载:函数或方法的名称相同,参数列表不同,在这多个名称相同,参数列表不同的函数或方法,就称作互相的重载。

public class Demo1 {
	public static void name() {
		boolean flag=true;
		if(flag) {
			System.out.println("我是重载函数");
		}
	}
	public static void name(boolean flag) {
		if(flag) {
			System.out.println("我是重载函数");
		}
	}
	public static void name(boolean flag,String str) {
		if(flag) {
			System.out.println(str);
		}
	}
}

上面这个例子中,name是函数名称,正常来说,如果函数名称一样应该会报错,但我这里并没有报错
例子中的方法
所以呢,这三个方法就可以互相被称作是重载
重写是在继承的条件下,子类跟父类的方法名相同,参数列表相同,子类将覆盖父类所原有的方法,我们称这种现象是方法的重写。如果两者不存在子父类继承关系,那么就不存在重写问题

public class Animal {
	public void eat() {
		System.out.println("eat......");
	}
public class Dog extends Animal{
	public void eat() {
		System.out.println("eat bone....");
	}

上面这两个方法中,Dog类继承了Animal类,也就重写了它的eat方法,所以最后输出的结果是eat bone…
        在很多时候,初学者分不清重写与重载,我们可以用它们的特点简单的区分一下:

**重写的特点**:
 1.发生在子父类关系当中,所以他们有一定的继承关系;
 2.重写方法的名称,参数列表,返回值类型必须一摸一样;
 3.重写方法的访问限制等级可以比被重写的方法低,但是不能比被重写的方
 法的访问限制等级低(就例如父类方法是public的等级,那么子类的重写方
 法就不能是private的等级)
 4.重写方法的抛出的异常不能比被重写的方法抛出异常的范围更广,重写方
 法的抛出范围可以更小或不写(例如父类方法抛出IOException,重写的子类就
 不能Exception)
 5.如果被final关键字修饰则不能被重写

(当然重写有一个特殊情况,private关键字隐式包含final关键字,所以被private修饰的方法不能被继承,所以就更不可能被重写,也只是两个名字相同的方法罢了,跟父类方法没有任何关系)

 **重载的特点**:
 1.被重载的方法必须改变参数列表
 2.被重载的方法可以改变返回类,访问限制,可以抛出更广的异常
 3.能够在同一个类或者在子类中被重载

(重载通俗的讲,这些方法的名字是一样的,参数列表必须不一样,剩下的并没有太多的要求。)

如果对继承有疑问可以去看我的上次笔记:
Java小白记录学习路线(java基础)-----面向对象

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值