Java继承中的重写

上篇博客中讲到了Java中的继承,那么我们知道子类虽然能继承父类中的一部分方法,但但有时候,当父类方法已经不能满足子类对象的的特征是,父类方法就不再适用,这时就需要用到Java中的重写。

一、重写是什么?

子类可以继承父类方法,但有时从父类继承的方法在子类中必须进行修改以适应新类的需要,这种对父类方法进行改写或改造的现象称为方法重写或方法覆盖。父类方法在子类中重写使继承更加灵活。

二、如何重写?

举下面两段代码:

父类:

public class Father {
	
	public Object eat(String a) {
		System.out.println("用筷子吃饭");
		return "meat";
	}
}

未重写的子类代码:

public class Son extends Father{
	
	
	
	public static void main(String[] args) {
		Son son = new Son ();
		son.eat("3");
		
	}
}

子类运行结果:

子类程序照常运行了父类方法。

将子类方法重写:

public class Son extends Father{
	
	@Override
	public Object eat(String str) {
		System.out.println("用刀叉吃饭");
		return "rice";
	}
	
	public static void main(String[] args) {
		Son son = new Son ();
		son.eat("3");
		
	}
}

提取出这一段代码:

@Override
             public Object eat(String str) {
                      System.out.println("用刀叉吃饭");
                      return "rice";
              }

这里首先反映出了Java中重写方法的一部分规则:

1.方法名相同,参数列表相同(个数和数据类型相同)

2.Java中用@Override标注重写后的方法,如果重写不成功,标注会报错。

3.public protected friendly private ,重写后的方法的访问权限只能和父类的相同或比父类的大。

错误示范:

当然,重写远远不止这么简单。重写还有如下规则,一一验证:

4.如果父类中方法用final修饰,则该方法无法被重写。

试错:

 

 5.返回值,如果父类返回值为void类型或基本数据类型(byte short int long float double char boolean),则子类重写后方法的返回值必须与父类相同。如果父类返回值为引用类型,则子类返回值要么与父类相同,要么是父类返回值的类型的子类。

 父类:

 子类:

返回值为引用型时:

父类:

子类:

6.静态方法不能用来重写父类方法,也不能被作为父类方法重写。

报错:

父类为静态方法:

 

子类为静态方法:

 

综上,就是对Java继承中重写的详述。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值