Java中,方法的重写、重载的区别,以及多态的实例
首先我们要明白什么是重写和重载
重写(override):子类方法覆盖了父类的方法。 (类与类之间继承的关系)
例:父类代码
public class Deng {
public void QiDong(){
System.out.println("亮了");
}
public void GuanBi(){
System.out.println("灭了");
}
}
子类代码
public class DengPao extends Deng {
public void QiDong(){
System.out.println("灯泡亮了");
}
public void GuanBi(){
System.out.println("灯泡灭了");
}
}
如上,子类中的方法覆盖了父类的方法
重载(overload):在一个类中,方法可以重名,方法中的参数不同或数量不同,就不会冲突,即为重载(发生在一个类中的)
public class Fu {
protected String XingMing="小明";
public void Shuo(){ //函数名字一致,但是这个没有参数
System.out.println(this.XingMing+",你要好好学习");
}
public void Shuo(String a){ //这个有参数 这样就形成了重载
this.XingMing=a;
System.out.println(this.XingMing+",你要好好天天向上");
}
在main函数中,我们来调用
public class Test {
public static void main(String[] args) {
Fu fu=new Fu();
fu.Shuo();
fu.Shuo("小华");
}
最后的结果如下

多态:对象执行某个行为方法式表现出不同的形态。
多态分为两种:
动态多态,通过重写实现;
静态多态,通过重载实现;
动态多态一般通过父类的引用,指向子类的实例来实现。实例调用的时候,调的是子类的方法。
这句话怎么理解呢?
Deng dg=new DengGuan();
就是这样的一个例子
多态的例子
USB接口,插入鼠标和U盘,模拟提示运行,拔出模拟提示拔出
为了方便查看, 我把几段代码集合到了一起
package com.itnba.maya.usb;
public class USB { //父类
public void QiDong(){
}
public void TingZhi(){
}
}
public class UPan extends USB { //子类
public void QiDong(){
System.out.println("u盘启动了");
}
public void TingZhi(){
System.out.println("u盘停止运行了");
}
}
public class ShuBiao extends USB { //子类
public void QiDong(){
System.out.println("鼠标驱动了");
}
public void TingZhi(){
System.out.println("鼠标停止驱动");
}
}
public class DianNao { //统一参数类型
public void ChaRu(USB u){
u.QiDong();
}
public void BaChu(USB u){
u.TingZhi();
}
}
public class Test { //测试
public static void main(String[] args) {
DianNao n=new DianNao();
USB pan=new UPan();
USB shu=new ShuBiao();
n.ChaRu(pan);
n.BaChu(pan);
n.ChaRu(shu);
n.BaChu(shu);
}
}
最后输出的结果

Java中,方法的重写、重载的区别,以及多态的实例的更多相关文章
- Java中方法的重写与成员变量的隐藏
这篇文章讨论了Java面向对象概念中一个基本的概念–Field Hiding(隐藏成员变量) 在讨论这个问题之前,我们看一段特别特别简单的代码,请问一下方法的数据结果是什么? public class ...
- java 中方法的重写
方法的重写 1.在子类中可以根据需要对从基类中继承来的方法进行重写. 2.方法重写必须要和被重写方法具有相同方法名称.参数列表和返回类型. 3.重写方法不能使用比被重写方法更严格的访问权限 4.注意与 ...
- 《Java中方法的重写》
//方法的重写 /* 注意:方法的重写要遵循“两同两小一大”规则 “两同”即方法名相同.形参列表相同: “两小”(1)指的是子类方法返回值类型比父类方法的返回值类型更小或相等,[什么意思?] (2)子 ...
- Java中方法的重写
★★前提:方法的重写建立在继承关系上★★ 在Java程序中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类所有的特征,继承了父类所有的方法和变量. 所谓方法的重写是指子类中的方法与父类中继承 ...
- Java中方法next()和nextLine()的区别
原创 Java中Scanner类中的方法next()和nextLine()都是吸取输入台输入的字符,区别: next()不会吸取字符前/后的空格/Tab键,只吸取字符,开始吸取字符(字符前后不算)直到 ...
- java中方法的重写与重载的区别
重载: 方法名相同,但是参数必须有区别(参数不同可以使类型不同,顺序不同,个数不同).前提: 同一个类中,方法名相同,参数列表不同的2个或多个方法构成方法的重载 参数列表不同指参数的类型,参数的个数, ...
- Java中方法重写和方法重载
首先方法重写和方法重载是建立在Java的面向对象的继承和多态的特性基础上而出现的.至于面向对象的继承和多态的特性我就不在这里多说了.继承是指在一个父类的基础再创建一个子类,这样子类就拥有了父类的非私 ...
- Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)
Java中==.equals.hashcode的区别与重写equals以及hashcode方法实例 原文地址:http://www.cnblogs.com/luankun0214/p/4421770 ...
- java多态性方法的重写Overriding和重载Overloading详解
java多态性方法的重写Overriding和重载Overloading详解 方法的重写Overriding和重载Overloading是Java多态性的不同表现.重写Overriding是父类与子类 ...
- Java:面向对象(继承,方法的重写(overide),super,object类及object类中方法的重写,父子类代码块执行顺序)
继承: 1.继承是对某一匹类的抽象,从而实现对现实世界更好的建模. 2.提高代码的复用性. 3.extends(扩展),子类是父类的扩展. 4.子类继承父类可以得到父类的全部属性和方法.(除了父类的构 ...
随机推荐
- 60分钟Python快速学习(给发哥一个交代)
60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空 ...
- Nginx服务器之基础学习
一.Nginx介绍 nginx:Nginx是一种软件服务器(轻量级),故它最主要的功能就是可以与服务器硬件结合,我们的应用程序可以放在nginx服务器上进行发布,已达到让网民浏览的效果.除此自外,Ng ...
- Laravel 5.3 auth中间件底层实现详解
1. 注册认证中间件, 在文件 app/Http/Kernel.php 内完成: protected $routeMiddleware = [ 'auth' => \Illuminate\Aut ...
- TypeLoadException: 找不到 Windows 运行时类型“Windows.UI.Xaml.Controls.Binding
奇怪的问题,我以为是我不小心添加了什么标签导致的,后来发现...坑爹,把项目名字改一下,然后移除掉,接着再加载一下就可以了.......崩溃了,,,,事实证明==>这个时候再把名字改回去也是不报 ...
- Effective Modern C++ 42 Specific Ways to Improve Your Use of C++11 and C++14
Item 1: Understand template type deduction. Item 2: Understand auto type deduction. Item 3: Understa ...
- 用扩展开发一个PHP类
原文:http://my.oschina.net/mickelfeng/blog/122519?p=1 假设我们要用PHP扩展实 现一个类Person,它有一个private的成员变量$_name和两 ...
- .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB
今天给大家介绍一个不错的小巧轻量级的NoSQL文件数据库LiteDB.本博客在2013年也介绍过2款.NET平台的开源数据库: 1.[原创]开源.NET下的XML数据库介绍及入门 2.[原创]C#开源 ...
- VXLAN 概念(Part II)- 每天5分钟玩转 OpenStack(109)
上一节我们介绍了 VXLAN 的封装格式以及 VTEP.今天我们将通过例子讨论 VXLAN 封装和转发包的过程,以及 Linux 对 VXLAN 的原生支持. VXLAN 包转发流程 VXLAN 在 ...
- EntityFramework之一对一关系(二)
前言 关于表关系园中文章也是数不胜收,但是个人觉得最难攻克的是一对一,对其配置并非无道理可循,只要掌握了原理方可,且听我娓娓道来! 共享主键关系 概念:就是两个表共享相同的主键值,也就是说一表的主键值 ...
- Python标准库13 循环器 (itertools)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在循环对象和函数对象中,我们了解了循环器(iterator)的功能.循环器是对象的 ...