概述java中重写

为什么要重写?

举个栗子:楠楠追星,一开始她追的是邓伦,但是之后她又迷上了胡歌,之后又改成了古天乐,然后陈情令播出后又粉上了肖战和王一博,之后又投向李现的怀抱。那么我们就知道了她粉的明星一直在改变。我们一开始在父类当中写入的代码是:楠楠粉邓伦。然后子类中程序都写好了。但是,楠楠粉的明星人改变了,那么我们是不是就要将用到邓伦的代码全都改了,改成胡歌。如果代码少还行,那么很多呢?更何况楠楠粉的明星还一直在改变。所以,当子类继承父类的eat方法已经不能准确描述子类自身行为特征了。我们要进行一些改变来适应新的要求。这就是重写。

重写是什么?

重写:我们可以理解为重新改写。引申到java中就是:
对父类方法进行改写或改造的现象称为方法重写或方法覆盖。

比如:父亲和儿子一开始都是使用筷子吃饭,可之后儿子去西方留学,很多年过去,儿子已经不再会用筷子吃饭了,他使用刀叉吃饭。我们可以这样写:
新建一个Student类作为子类
`

public class Student extends Father{
  public static void main(String[] args) {
   Student stu =new Student();
   stu.test();
  }
}

再建一个Father类作为父类。

public class Father     {
 public void  test () {
  System.out.print("使用筷子吃饭。。。。。。。。");
 }
 }`

输出:

使用筷子吃饭。。。。。。。。

儿子改变后子类改变为:

public class Student extends Father{
  public void  test () {
   System.out.print("使用刀叉吃饭。。。。。。。。");
  }
  public static void main(String[] args) {
   Student stu =new Student();
   stu.test();
  }
 
 }

结果:

使用刀叉吃饭。。。。。。。。

怎么重写?

重写里的语法、注意事项:
1、如果父类方法被final/static修饰,那么这个方法就不能被子类重写了。

在这里插入图片描述
在这里插入图片描述
2、我们使用@Override来标注重写后的方法。
在这里插入图片描述
3、子类调用父类方法:
(1)如果它在子类中是非静态代码块/非静态方法。使用super关键字调用。
(2)如果它在子类中是 静态代码块/ 静态方法。我们要在子类中创建父类对象进行调用。
在这里插入图片描述
4、重写时,方法名要相同,参数列表也要相同。(指的是个数和类型,不考虑变量名相不相同。

参数类型同为String类型,个数都为1,但是变量名一个为a,一个为b。
在这里插入图片描述
5.访问权限从大到小排列顺序为:
public<-------------protected<-----------------friendly<-----------------private
重写后的方法的访问权限只能比父类的大或者相同。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
6、返回值。

  • 如果父类方法返回值为void或基本类型()

    子类重写后的方法返回值
  • 必和父类相同
  • 在这里插入图片描述
    在这里插入图片描述
  • 如果返回值是引用类型(比如 类 和String)

    子类重写后的方法返回值
    • 要么和父类相同
    • 要么是父类方法返回值的子类,不能是基本数据类型
      在这里插入图片描述
      在这里插入图片描述

7、子类重写后的方法不能加static(即都是非静态的)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涟涟涟涟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值