方法重写

什么是方法重写?

方法重写指的是当子类和父类出现了一摸一样的方法声明

方法重写有什么用?

当父类中有一个方法时,子类会继承,但是子类并不一定能够用到,或者说继承过来的方法不满足使用,需要重新写方法体,但是仅限于方法体的修改。

案例:手机拥有打电话的功能,智能手机拥有视频通话的功能。

class Phone{
public void call(){
System.out.println("电话拨通中");
}
}
class SmartPhone extends Phone{ } public class Application{
public static void main(String[] args){
SmartPhone sp=new SmartPhone();
sp.call();
}
}
//输出结果
电话拨通中

SmartPhone类中是不含有call的方法的,但是因为其父类Phone含有该方法,所以可以引用call方法;

但是作为智能手机不应该只有call的方法,所以我们要将其从父类中继承过来的方法进行重写来加入新的功能;这就是方法重写的意义所在。

class Phone{
public void call(){
System.out.println("电话拨通中");
}
}
class SmartPhone extends Phone{
@override //@override 是具有检测功能的注解,检测下方的方法是否为方法重写
public void call(){//方法重写必须与父类的返回值类型,方法名,形参一致
System.out.println("视频通话已开启");//我们加入了新的输出语句
System.out.println("电话拨通中");//这里我们应该简化语句写出:super.call();
}
} public class Application{
public static void main(String[] args){
SmartPhone sp=new SmartPhone();
sp.call();
}
}
//输出结果
视频通话已开启
电话拨通中

方法重写的注意细节

现在我们已经了解方法重写的意义,方法重写中还有一些细节需要我们注意;

我们发现不管是父类的还是子类方法前面有时候会加上publicprivate等等词语;

我们将加在前面的这些词语称为访问权限修饰符;他们的等级为:public>protected>private

class Phone{
//在父类中设置一个默认权限的方法(没有加修饰符就代表默认)
void call(){
System.out.println("电话拨通中");
}
}
class SmartPhone extends Phone{
@override
//子类重写父类方法时访问权限必须高于或等于父类的访问权限
void call(){
//此时可以加的修饰词为:public、protected
System.out.println("视频通话已开启");
super.call();
}
} public class Application{
public static void main(String[] args){
SmartPhone sp=new SmartPhone();
sp.call();
}
}

总结:

  • 重写是发生在继承的基础上
  • 重写是针对方法而言的
  • 子类方法重写时,方法的声明一定要与父类的方法声明保持一致
  • 父类的私有方法子类不能继承和进行重写
  • 子类对父类方法进行重写时,访问权限修饰符的等级一定不可小于父类方法的访问权限修饰符等级
  • public>protected>private

最新文章

  1. JS实现滑动门效果
  2. Bootstrap_表单
  3. linux-查看磁盘硬盘空间
  4. 让你的.NET程序支持多语言
  5. Django数据操作
  6. HDU 5727 - Necklace
  7. ubuntu 在下面 hadoop 安装
  8. Java关于Robot类的使用以及远程桌面的实现
  9. C++ STL快速入门
  10. Android学习笔记-开关按钮ToggleButton和开关Switch
  11. 201521123081《Java程序设计》 第8周学习总结
  12. mybatis调用oracle存储过程的几个参考例子
  13. Django学习笔记之视图高级-HTTP请求与响应
  14. mysql安装密码策略插件
  15. Senparc.Weixin SDK 微信公众号 .NET 开发教程 索引
  16. DLib压缩解压程序示例
  17. ps 和 grep 查找消除 grep自身查找
  18. 网络比总线差多了 除非是真正的mpp并行架构
  19. Direcshow相关资料
  20. EF 剥坑

热门文章

  1. 微服务系列之网关(二) konga配置操作
  2. 【项目实战】Kaggle泰坦尼克号的幸存者预测
  3. ProxySQL 全局变量详解
  4. Kibana仪表盘(Dashboard)详解
  5. centos 安装mysql 8.0
  6. 一文搞定 Spring事务
  7. bilibili弹幕爬虫
  8. CSS基础-关于CSS注释的添加
  9. bfs与dfs基础
  10. BZOJ3732 Network(Kruskal重构树)