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

重写(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. Azure Table storage 基本用法 -- Azure Storage 之 Table

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table,其中的 Table 就是本文的主角 Azure Tabl ...

  2. SQL Azure (15) SQL Azure 新的规格

    <Windows Azure Platform 系列文章目录> 在以前的文章中,笔者给大家介绍了Microsoft Azure SQL Database (以前被称为SQL Azure)的 ...

  3. CI Weekly #4 | 不同规模的团队,如何做好持续集成?

    CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...

  4. .Net 转战 Android 4.4 日常笔记(5)--新软件Android Studio 0.5.8安装与配置及问题解决

    说真心话,Eclipse跟我们.net的VS比起来就是屌丝比高富帅,一切都是那么的难用,速度慢得我无法忍受 于是想试试Google钦点的Android Studio IDE工具,这跟ADT一样也是一套 ...

  5. 在Linux中运行Nancy应用程序

    最近在研究如何将.NET应用程序移植到非Windows操作系统中运行,逐渐会写一些文章出来.目前还没有太深的研究,所以这些文章大多主要是记录我的一些实验. 这篇文章记录了我如何利用NancyFx编写一 ...

  6. 如何利用Python生成随机密码

    写了个程序,主要是用来检测MySQL数据库的空密码和弱密码的, 在这里,定义了三类弱密码: 1. 连续数字,譬如123456,在get_weak_num中实现 2. 连续字母,譬如abcdef,在ge ...

  7. 【记录】ASP.NET MVC RegisterBundles

    1. Install the package from nuget Install-Package Microsoft.AspNet.Web.Optimization 2,BundleConfig 配 ...

  8. struts2学习笔记--OGNL表达式1

    struts2标签库主要使用的是OGNL语言,类似于El表达式,但是强大得多,它是一种操作对象属性的表达式语言,OGNL有自己的优点: 能够访问对象的方法,如list.size(); 能够访问静态属性 ...

  9. 谈谈JAVA工程狮面试中经常遇到的面试题目------什么是MVC设计模式

    作为一名java工程狮,大家肯定经历过很多面试,但每次几乎都会被问到什么是MVC设计模式,你是怎么理解MVC的类似这样的一系列关于MVC的问题. [出现频率] [关键考点] MVC的含义 MVC的结构 ...

  10. 从零开始学 Java - 我放弃了 .NET ?

    这不是一篇引起战争的文章 毫无疑问,我之前是一名在微软温暖怀抱下干了近三年的 .NET 开发者,为什么要牛(sha)X一样去搞 Java 呢?因为我喜欢 iOS 阿!哈哈,开个玩笑.其实,开始学 Ja ...