文档章节

java子类中方法的重写与重载

月生无界
 月生无界
发布于 2016/05/17 00:26
字数 1174
阅读 47
收藏 1

首先,做简单的代入:父类 = 父亲子类 = 儿子

然后,父类与子类中都有eat()这个方法(eat() = 吃饭

故事开始了,父亲是一个朴实简单的人,所以每次吃饭都用同一双筷子,同一个碗,每顿吃的菜都只有一个菜,青菜

现在我们来简单的建立一个父类,名字就叫 father,在父类中定义一个简单的 eat(String kuaizi,String wan),两个固定的参数,而方法内部加一些简单的实现,例如吃了什么菜,eat qingcai

package text;
public class Father {
	protected boolean eat(String kuaizi,String wan){
		System.out.println("eat qingcai");
		return true;
	}
}

父亲生了一个儿子,儿子小的时候也跟父亲一样,每次吃饭都用同一双筷子,同一个碗,每顿吃的菜都只有一个菜,青菜

现在我们再来建立一个子类,名字就叫son,ectends父类,与父类一样,都有一个一样的eat方法,那么很简单,子类中的方法就是重写了,相当于完全复制了一遍,当然这是最简单的方法重写,就是完全复制一次

package text;

public class Son extends Father{
	protected boolean eat(String kuaizi,String wan){
		System.out.println("eat qingcai");
		return true;
	}
}

上面是最简单的重写,然而java的方法时有权限修饰的,public,protected,default,private

那么子类方法重写涉及到了权限,那么权限必须不低于父类中的,其隐私性比父类的低或者同等,所以子类中方法可以用public修饰,也可以跟父类中的一样,使用protected

package text;

public class Son extends Father{
	public boolean eat(String kuaizi,String wan){
		System.out.println("eat qingcai");
		return true;
	}
}

故事继续,儿子慢慢长大,觉得青菜已经无法满足了,他觉得吃饭每次都吃青菜,实在是无法忍受的事情,于是他吃饭的时候加多了一种菜,白菜,而父亲却不喜欢吃白菜,依旧每顿都是青菜

这里是方法重写的另外一种情况,那就是方法内部实现的修改,但是参数和返回值其实是一样的,都是吃饭,但是儿子已经与父亲不同,他吃饭的过程,已经多出了要吃白菜,所以方法重写的内部实现的局限在于参数,方法名,返回值不变,其内部如何实现,可以根据自己需求来写

package text;

public class Son extends Father{
	public boolean eat(String kuaizi,String wan){
		System.out.println("eat qingcai");
		System.out.println("eat baicai");
		return true;
	}
}

---------------------------------------华丽的分割线--------------------------------------------

前面是方法重写,接着来讲方法重载

---------------------------------------华丽的分割线--------------------------------------------

故事继续,对于吃饭,儿子觉得用筷子吃饭,太麻烦了,于是他换了勺子,不再用筷子,但是有时候用勺子夹菜不方便,于是他有时候吃饭会一手勺子,一手筷子

首先来说方法重载参数问题,参数,是可变的,如果是重载,参数必须跟父类的不一样,就好像再说,你吃饭可以,但是不能和我一样只用同一双筷子和碗,然后,你爱怎么吃怎么吃,所以方法的重载,参数的自由性是很强的,甚至可以没有,当然如果没有,那么你吃饭失败,这又涉及到了方法的返回值,下一轮讲

	public boolean eat(int shaozi,String wan){
		System.out.println("eat qingcai");
		System.out.println("eat baicai");
		return true;
	}

方法重载的返回值,可以相同,也可以不同,关于方法重载的权限修饰,那时属于你自己的事情,什么权限都可以用来修饰

故事最后,吃饭的父子到此结束,老夫累了,有时候突然想想,发现编程与生活中很多东西如此相似,也许这就是万事万物的规律,编程的创始人的灵感来源于生活,我们便不应该把学习编程与生活脱离开来,这样才能愉快的玩耍

方法重写:子修饰权限不能低于父,方法实现过程随意,只有方法名、参数、返回值不变

方法重载:子参数类型不能完全与父同,方法名必须同,其他实现过程、参数、返回值随意

方法的权限修饰大小:public > protected > default > private

 

© 著作权归作者所有

上一篇: 数独算法
月生无界
粉丝 9
博文 31
码字总数 40210
作品 0
广州
后端工程师
私信 提问
04-《深度拆解JVM》之 JVM是如何执行方法调用的?(上)

一、问题引入 前不久在写代码的时候,郑雨迪老师不小心踩到一个可变长参数的坑。它就是由于可变长参数方法的重载造成的。(注:官方文档建议避免重载可变长参数方法,见 [1] 的最后一段。) ...

飞鱼说编程
2018/09/18
22
0
java方法重载重写原理学习的简单总结

概述 根据查看过的 深入理解JVM 和 郑雨迪的教程,对java中方法重载的原理进行一个大致总结 具体总结 在JAVA中,多态主要体现为方法的重载和重写。 方法重载:同一个类中,方法名相同,参数列...

娑婆丶
02/18
37
0
JavaSE|Java中的关键字及其他术语

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/darlingwood2013/article/details/89351149 JavaSE|Java中的关键字及其他术语 final 关键字 在Java中,final...

叶晚林
04/17
0
0
【Java】疯狂Java基础(一)——面向对象的特征:继承、封装和多态

一、前言 小编记得,刚接触计算机相关的课程的时候,接触的是c++,c++的老师一上来就说c++是面向对象的,c语言是面向过程的。面向对象比面向过程厉害,是从面向过程发展过来的的。 当时有一个...

kisscatforever
2018/03/28
0
0
Java面试题收集

Java面试题收集 1.什么是B/S架构?什么是C/S架构 B/S(Browser/Server),浏览器/服务器程序 C/S(Client/Server),客户端/服务端,桌面应用程序 2.你所知道网络协议有那些? HTTP:超文本传输协...

皮皮尘啊
2017/06/21
1K
9

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
14
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
15
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部