JAVA面向对象四大特性之一“多态”

多态的概念:字面解释就是一个事物的多种形态。比如水可以是气体可以是液体。

Java中的方法,对象也都有多态的体现。 

Java中的多态有两种体现,方法的重载和重写。

下面介绍多态的定义和使用

1.方法的重载体现多态

public class Student {
    public static void main(String[] args) {
//        多态:同一个调用,作用于不同对象
//        首先介绍方法重载如何体现多态,println是jdk自带的方法
//        可以看出是同一个方法println调用了不同的数据类型的方法,这就是多态的体现
        System.out.println(1234);
        System.out.println("Susan");
        System.out.println(true);
    }
}

2.方法的重写体现多态

在王者荣耀游戏中,有很多不同职位的英雄,比如法师,战士,辅助等。

首先我们定义一个人物类作为父类

public class Figure {
public String name;
public void attack(){
//    由于不同英雄的攻击方式不一样,所以方法体先空着
}
public void run(){
    System.out.println("英雄在奔跑");
}
}

再定义一个战士类继承人物类

public class Fighter extends Figure{
//    战士类
//    重写Figure父类的方法
//    attack相当于抽象出来共有的方法
    public void attack(){
//        this指对象父类,对象点属性名的表达
        System.out.println(this.name+"正在进行物理攻击");
    }
}

以此类推,定义一个法师类继承人物类

//法师类
public class Master extends Figure{

  public void attack(){
      System.out.println(this.name+"正在进行魔法攻击");
  }
}

在最后的测试阶段

public class Test {
    public static void main(String[] args) {
//        由于父类的指向范围更大,我们可以用父类引用名指向具体的子类引用名
        Figure figure1 = new Fighter();
        figure1.name="马超";
//        由于我们的父类方法体为空,所以这里是调用的子类方法
        figure1.attack();
//        在这里的理解是,父类指向子类。
/*     比如蛇是爬行动物,我们可以用
      Paxing paxing1 = new Snack();
理解就是,蛇的父类就是爬行动物
 */

        Figure figure2 = new Master();
        figure2.name="王昭君";
        figure2.attack();
    
//如果在使用子类对象过程中,不知道自己使用的是哪个对象,可以使用 instance of进行判断
        if (figure2 instanceof Master){
            System.out.println("figure2这是一个法师对象");
        }else
            System.out.println("figure2这是一个战士对象");
    }
}

    总结:多态的使用能够大大提高程序的灵活性和设计的扩展性

控制台运行结果:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值