首先我们要明白什么是重写和重载

重写(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中,方法的重写、重载的区别,以及多态的实例的更多相关文章

  1. Java中方法的重写与成员变量的隐藏

    这篇文章讨论了Java面向对象概念中一个基本的概念–Field Hiding(隐藏成员变量) 在讨论这个问题之前,我们看一段特别特别简单的代码,请问一下方法的数据结果是什么? public class ...

  2. java 中方法的重写

    方法的重写 1.在子类中可以根据需要对从基类中继承来的方法进行重写. 2.方法重写必须要和被重写方法具有相同方法名称.参数列表和返回类型. 3.重写方法不能使用比被重写方法更严格的访问权限 4.注意与 ...

  3. 《Java中方法的重写》

    //方法的重写 /* 注意:方法的重写要遵循“两同两小一大”规则 “两同”即方法名相同.形参列表相同: “两小”(1)指的是子类方法返回值类型比父类方法的返回值类型更小或相等,[什么意思?] (2)子 ...

  4. Java中方法的重写

    ★★前提:方法的重写建立在继承关系上★★ 在Java程序中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类所有的特征,继承了父类所有的方法和变量. 所谓方法的重写是指子类中的方法与父类中继承 ...

  5. Java中方法next()和nextLine()的区别

    原创 Java中Scanner类中的方法next()和nextLine()都是吸取输入台输入的字符,区别: next()不会吸取字符前/后的空格/Tab键,只吸取字符,开始吸取字符(字符前后不算)直到 ...

  6. java中方法的重写与重载的区别

    重载: 方法名相同,但是参数必须有区别(参数不同可以使类型不同,顺序不同,个数不同).前提: 同一个类中,方法名相同,参数列表不同的2个或多个方法构成方法的重载 参数列表不同指参数的类型,参数的个数, ...

  7. Java中方法重写和方法重载

     首先方法重写和方法重载是建立在Java的面向对象的继承和多态的特性基础上而出现的.至于面向对象的继承和多态的特性我就不在这里多说了.继承是指在一个父类的基础再创建一个子类,这样子类就拥有了父类的非私 ...

  8. Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)

    Java中==.equals.hashcode的区别与重写equals以及hashcode方法实例  原文地址:http://www.cnblogs.com/luankun0214/p/4421770 ...

  9. java多态性方法的重写Overriding和重载Overloading详解

    java多态性方法的重写Overriding和重载Overloading详解 方法的重写Overriding和重载Overloading是Java多态性的不同表现.重写Overriding是父类与子类 ...

  10. Java:面向对象(继承,方法的重写(overide),super,object类及object类中方法的重写,父子类代码块执行顺序)

    继承: 1.继承是对某一匹类的抽象,从而实现对现实世界更好的建模. 2.提高代码的复用性. 3.extends(扩展),子类是父类的扩展. 4.子类继承父类可以得到父类的全部属性和方法.(除了父类的构 ...

随机推荐

  1. 60分钟Python快速学习(给发哥一个交代)

    60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空 ...

  2. Nginx服务器之基础学习

    一.Nginx介绍 nginx:Nginx是一种软件服务器(轻量级),故它最主要的功能就是可以与服务器硬件结合,我们的应用程序可以放在nginx服务器上进行发布,已达到让网民浏览的效果.除此自外,Ng ...

  3. Laravel 5.3 auth中间件底层实现详解

    1. 注册认证中间件, 在文件 app/Http/Kernel.php 内完成: protected $routeMiddleware = [ 'auth' => \Illuminate\Aut ...

  4. TypeLoadException: 找不到 Windows 运行时类型“Windows.UI.Xaml.Controls.Binding

    奇怪的问题,我以为是我不小心添加了什么标签导致的,后来发现...坑爹,把项目名字改一下,然后移除掉,接着再加载一下就可以了.......崩溃了,,,,事实证明==>这个时候再把名字改回去也是不报 ...

  5. 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 ...

  6. 用扩展开发一个PHP类

    原文:http://my.oschina.net/mickelfeng/blog/122519?p=1 假设我们要用PHP扩展实 现一个类Person,它有一个private的成员变量$_name和两 ...

  7. .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB

    今天给大家介绍一个不错的小巧轻量级的NoSQL文件数据库LiteDB.本博客在2013年也介绍过2款.NET平台的开源数据库: 1.[原创]开源.NET下的XML数据库介绍及入门 2.[原创]C#开源 ...

  8. VXLAN 概念(Part II)- 每天5分钟玩转 OpenStack(109)

    上一节我们介绍了 VXLAN 的封装格式以及 VTEP.今天我们将通过例子讨论 VXLAN 封装和转发包的过程,以及 Linux 对 VXLAN 的原生支持. VXLAN 包转发流程 VXLAN 在 ...

  9. EntityFramework之一对一关系(二)

    前言 关于表关系园中文章也是数不胜收,但是个人觉得最难攻克的是一对一,对其配置并非无道理可循,只要掌握了原理方可,且听我娓娓道来! 共享主键关系 概念:就是两个表共享相同的主键值,也就是说一表的主键值 ...

  10. Python标准库13 循环器 (itertools)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在循环对象和函数对象中,我们了解了循环器(iterator)的功能.循环器是对象的 ...