java基础18---方法重写

一、方法的重写:

1.子类中出现了和父类中一模一样的方法声明,也被称为方法覆盖,方法重写(复写);
2.重写的格式:

1).返回值类型  方法名 ,形参列表:必须完全一致;

A."返回值类型"和"方法名"相同,"参数列表"不同:编译通过。类似于"重载",子类定义了一个自己的方法

B."方法名"和"参数列表"相同,"返回值类型"不同:编译错误。如果"方法名"和"形参列表"相同,要求"返回值类型"必须相同;

2).访问修饰符:

要求:

子类的方法所具有的访问修饰符必须跟父类的方法的访问修饰符相同,或更宽的访问修饰符;

public,protected,(默认),private(从宽到窄)

3、当子类需要父类的功能,而功能主体子类有自己特有内容时,

  可以重写父类中的方法,

  这样,即沿袭了父类的功能,又定义了子类特有的内容。

4、方法重写的注意事项

1.父类中私有方法不能被重写。

2.子类重写父类方法时,访问权限不能更低。必须是具有:相同,或更宽的访问权限;

3.父类静态方法,子类也必须通过静态方法进行重写。

4.父类被final修饰的方法不能被重写
5.关于异常,子类重写方法异常范围要小于父类方法异常或没有异常

5、方法重写和方法重载的区别

1.方法重写和方法重载的区别?方法重载能改变返回值类型吗?

1.Overload:重载

2.Override:重写

1.重载:在一个类中,可以定义多个同名的方法,但形参列表不完全相同;跟返回值无关;

2.重写:在子类中,可以定义跟父类一模一样的方法(返回值类型、方法名、形参列表完全相同),这时
    子类的方法会覆盖父类中同名的方法。

创建一个父类Student
在这里插入图片描述
创建一个子类PrimaryStudent
在这里插入图片描述
创建一个MyClass
在这里插入图片描述
根据结果可知,子类的方法覆盖了父类

前面文章提到:final方法不能被子类的方法覆盖
我们来试一下
修改父类的方法
在这里插入图片描述
回到子类去看一下
在这里插入图片描述
show方法有报错,报错信息为:
Cannot override the final method from Student

二、补充一下super的用法
父类不变
在这里插入图片描述
子类做修改,添加super.show();
在这里插入图片描述
运行结果
在这里插入图片描述
分析:由于在子函数中使用的super关键字,super相当于一个指向自己超(父)类的一个指针,在子类PrimaryStudent的show()方法中,首先调用了父类的show()方法,这样做的好处是可以将子类中show()方法的代码内容视为父类Student中show()方法的补充。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值