疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

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("小华");

  }

  最后的结果如下

  多态:对象执行某个行为方法式表现出不同的形态。

  多态分为两种:

  动态多态,通过重写实现;

  静态多态,通过重载实现;

  动态多态一般通过父类的引用,指向子类的实例来实现。实例调用的时候,调的是子类的方法。

  这句话怎么理解呢?

  1

  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);

  }

  }

  最后输出的结果