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 相关文章推荐
解析Java中的static关键字
Jun 14 Java/Android
Java框架入门之简单介绍SpringBoot框架
Jun 18 Java/Android
spring项目中切面及AOP的使用方法
Jun 26 Java/Android
Java 语言中Object 类和System 类详解
Jul 07 Java/Android
Spring Cloud 中@FeignClient注解中的contextId属性详解
Sep 25 Java/Android
Java 数据结构七大排序使用分析
Apr 02 Java/Android
Spring Boot接口定义和全局异常统一处理
Apr 20 Java/Android
解决Springboot PostMapping无法获取数据的问题
May 06 Java/Android
Android开发手册TextInputLayout样式使用示例
Jun 10 Java/Android
Android学习之BottomSheetDialog组件的使用
Jun 21 Java/Android
Android实现图片九宫格
Jun 28 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
flash用php连接数据库的代码
2011/04/21 PHP
php正则表达式使用的详细介绍
2013/04/27 PHP
PHP随机数 C扩展随机数
2016/05/04 PHP
功能强大的PHP发邮件类
2016/08/29 PHP
另类调用flash无须激活的方法
2006/12/27 Javascript
javascript+dom树型菜单类,希望朋友们一起进步
2007/05/03 Javascript
IE6,IE7下js动态加载图片不显示错误
2010/07/17 Javascript
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
js跳转页面方法总结
2014/01/29 Javascript
JS的get和set使用示例
2014/02/20 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
2016/12/01 Javascript
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
[07:12]2014DOTA2西雅图国际邀请赛 黑马Liquid专题采访
2014/07/12 DOTA
python实现文本去重且不打乱原本顺序
2016/01/26 Python
基于numpy.random.randn()与rand()的区别详解
2018/04/17 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
使用python实现下载我们想听的歌曲,速度超快
2020/07/09 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
DBA的职责都有哪些
2012/05/16 面试题
初中物理教学反思
2014/01/14 职场文书
十八届三中全会学习方案
2014/02/16 职场文书
三年级学生评语
2014/04/23 职场文书
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
新疆民族团结演讲稿
2014/08/27 职场文书
小学生自我评价100字(15篇)
2014/09/18 职场文书
人事任命通知
2015/04/20 职场文书
男人帮观后感
2015/06/18 职场文书
Python软件包安装的三种常见方法
2022/07/07 Python