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.子类继承父类可以得到父类的全部属性和方法.(除了父类的构 ...
随机推荐
- CWR Mobile简介
原创地址:http://www.cnblogs.com/jfzhu/p/4266671.html 转载请注明出处 (一)CWR公司背景 Dynamics CRM除了自己Out of Box对移动设备的 ...
- Swift 和 C# 的语法比较
昨天看到Jacob Leverich 写了一篇文章 Swift is a lot like Scala 介绍Swift 和 Scala 的语法对比,从这篇文章的确可以看到Swift 的语法和 Scal ...
- JavaScript算法(冒泡排序、选择排序与插入排序)
冒泡排序.选择排序与插入排序复杂度都是二次方级别的,放在一起说吧. 介绍一些学习这三个排序方法的比较好的资料.冒泡排序看<学习JavaScript数据结构与算法>介绍的冒泡排序,选择排序看 ...
- WebDriver--简单的元素操作
以登录163邮箱为例,演示以下几个方法的使用 ①switch_to.frame() ②.clear() ③.send_keys() ④.click() ⑤switch_to_default_conte ...
- Content-Type List
Content-Type List Description of Data Content Typical Filename Extensions MIME type/subtype Te ...
- Leetcode-463 Island Perimeter
#463. Island Perimeter You are given a map in form of a two-dimensional integer grid where 1 represe ...
- Constraint5:unique 约束和null
unique约束使用unique index来限制列值的唯一性: 创建unique约束之后,column中允许插入null值,unique 约束将两个null值看作是相同的(即null=null为tr ...
- LINQ系列:Linq to Object元素操作符
元素操作符从一个序列返回单个指定的元素. 1. DefaultIfEmpty DefaultIfEmpty操作符将一个空集合替换为包含默认的单个值的集合.在返回序列为空且又需要返回一些对象时,可以通过 ...
- Gridview里添加合计行
ShowFooter="true" ; ; ; protected void gvIncomeYG_RowDataBound(object sender, GridViewRowE ...
- Jquery通过Ajax方式来提交Form表单
今天刚好看到Jquery的ajax提交数据到服务器的方法,原文是: 保存数据到服务器,成功时显示信息. jQuery 代码: $.ajax({ type: "POST", url: ...