Java方法重载和方法重写的区别到底在哪?


Posted in Java/Android onJune 11, 2021

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

方法重载

方法重载的主要是在一个类当中,方法的方法名相同,参数列表不同,返回值类型可以相同,也可以不同.

/*
这里只是简单的示例一下,Food Snack没有给出,意会一下即可.
*/
public class Demo{
	public void eat(Food food){
		System.out.println("今天正常吃饭!吃了" + food.name);
	}
	
	public void eat(Snack snack){
		System.out.println("今天想吃零食!吃了" + snack.name);
	}
	
	public int eat(){
		int money = 10;
		System.out.println("今天喝西北风!但是省钱了,返回省钱的数目");
		return 10;
	}
	
	//public void eat(){
	//	int money = 10;
	//	System.out.println("今天喝西北风!但是省钱了,返回省钱的数目");
	//}
}

注意:如果参数列表相同,返回值类型不同是不算重载的.这种写法会直接报错.因为在调用方法的时候,我们还不知道方法的返回值类型,所以编译器无法区分你调用的是哪个方法,肯定就傻掉了,所以就告诉你,兄弟你写错了!

方法重写

方法的重写体现在子父类当中,最典型的是子类重写父类中的方法.

Father类和Son类都有Walk(boolean canRun)方法.
但是执行的时候结果却不同.

public class Father {

    private boolean canRun = false;

    public boolean isCanRun() {
        return canRun;
    }

    public void setCanRun(boolean canRun) {
        this.canRun = canRun;
    }

    public void walk(boolean canRun){
        if(canRun){
            System.out.println("父亲尽力跑啊跑!");
        }else{
            System.out.println("父亲老了,只可以走路!");
        }
    }
}
public class Son extends Father{

    boolean canRun;

    public Son(boolean canRun){
        this.canRun = canRun;
    }

    @Override
    public void walk(boolean canRun) {
        if(canRun){
            System.out.println("儿子可以跑!");
        }else{
            System.out.println("儿子也只能走!");
        }
    }
}
public class Test {
    public static void main(String[] args) {
        Father father = new Father();
        Son son = new Son(true);
        father.walk(father.isCanRun());
        son.walk(son.canRun);
    }
}

这里体现的就是子类Son重写了父类中的Walk()方法.
注意:重写这里有一个重要的点在于子类重写的方法不能低于父类方法的访问权限.
可以简单理解一下:在多态当中,父类引用指向子类对象,如果子类对象中重写的方法权限低于父类方法了,那么多态情况下,父类引用就无法访问子类中的方法了.

public class Test {
    public static void main(String[] args) {
        Father father = new Son(true);
        System.out.println(father.isCanRun());	// false
        father.walk(father.isCanRun());			// 儿子也只能走!
    }
}

这里很神奇,明明我的Son对象创建的时候传入的参数是true,为什么执行结果却是儿子也只能走!呢?

这里先进行一下这个知识点的小结,上面的问题会在下一个文章中讲解.

小结

1.方法重载体现在同一个类当中同名方法参数列表不同的情况(必须满足),返回值类型可以相同也可以不同.如果两个方法方法名相同,参数列表相同但是返回值类型不同是不算重载的.

2.方法重写体现在子父类当中,体现的不同类之间的联系.要求子类重写的方法有和父类相同的方法名,参数列表和返回值类型,但是方法内部的具体操作可以发生变化.方法重写时要求子类方法的范文权限不能低于父类方法的访问权限

到此这篇关于Java方法重载和方法重写的区别到底在哪?的文章就介绍到这了,更多相关Java方法重载和方法重写内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Java/Android 相关文章推荐
Win10系统下配置Java环境变量
Jun 13 Java/Android
浅谈自定义校验注解ConstraintValidator
Jun 30 Java/Android
Mybatis-plus在项目中的简单应用
Jul 01 Java/Android
gateway网关接口请求的校验方式
Jul 15 Java/Android
JavaWeb 入门:Hello Servlet
Jul 16 Java/Android
Java 垃圾回收超详细讲解记忆集和卡表
Apr 08 Java/Android
详解Flutter网络请求Dio库的使用及封装
Apr 14 Java/Android
Java 多线程并发FutureTask
Jun 28 Java/Android
Android RecyclerView实现九宫格效果
Jun 28 Java/Android
java.util.NoSuchElementException原因及两种解决方法
Jun 28 Java/Android
tree shaking对打包体积优化及作用
Jul 07 Java/Android
HttpClient实现文件上传功能
Aug 14 Java/Android
Java 将PPT幻灯片转为HTML文件的实现思路
springboot中一些比较常用的注解总结
Jun 11 #Java/Android
分享一些Java的常用工具
浅谈Java实现分布式事务的三种方案
源码解读Spring-Integration执行过程
为什么在foreach循环中JAVA集合不能添加或删除元素
Jun 11 #Java/Android
手把手教你用SpringBoot将文件打包成zip存放或导出
You might like
php的ajax框架xajax入门与试用介绍
2010/12/19 PHP
CentOS下PHP安装Oracle扩展
2015/02/15 PHP
Symfony学习十分钟入门经典教程
2016/02/03 PHP
9个比较实用的php代码片段
2016/03/15 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
2017/06/21 PHP
bgsound 背景音乐 的一些常用方法及特殊用法小结
2010/05/11 Javascript
理解Javascript_09_Function与Object
2010/10/16 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
2014/08/27 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
jquery 动态增加删除行的简单实例(推荐)
2016/10/12 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
2017/06/14 Javascript
vue实现购物车小案例
2019/09/27 Javascript
[56:29]Secret vs Optic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python中操作符重载用法分析
2016/04/29 Python
使用python实现生成用户信息
2017/03/20 Python
Python中的asyncio代码详解
2019/06/10 Python
Numpy的简单用法小结
2019/08/28 Python
Python HTMLTestRunner库安装过程解析
2020/05/25 Python
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
教师旷工检讨书
2014/01/18 职场文书
酒店经理职责
2014/01/30 职场文书
道路交通安全实施方案
2014/03/12 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书
荒岛余生观后感
2015/06/09 职场文书
2019餐饮行业创业计划书!
2019/06/27 职场文书
MySQL的Query Cache图文详解
2021/07/01 MySQL
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android