什么是多态 ?多态具体体现在哪些?


本文介绍面向对象的多态。

一、什么是多态?主要体现在哪里?

多态:就是类的方法或者对象具有多种状态,是OOP的第三大有太特征,是建立在封装和继承基础上的。 体现哪些方面? 1 .方法多态 对象多态

二、简单举例演示

package com.hspedu.homework;

public class Homework16 {
          
   
    public static void main(String[] args) {
          
   


        AAA obj = new BBB("yang","male");//向上转型
        //下面体现了运行类型可以改变
        obj.getName();
        AAA b1 = obj;
        System.out.println("obj的运行类型是:" + obj.getClass() ); //BBB
        obj = new CCC("wang","female","201912");
        System.out.println("obj的运行类型是:" + obj.getClass() );//CCC
        obj  = b1;
        System.out.println("obj的运行类型是:" + obj.getClass() );//BBB

        //向下转型
        BBB b2 = (BBB)obj;
        b2.getGender();  //向下转型之后 才可以访问子类中特有的成员。
        b2.getName();


        System.out.println("obj的运行类型是:" + obj.getClass() );//BBB
        //这里发现将父类引用对象向下转型为子类
    }
}

class AAA {
          
   
    private String name = "wang";

    public AAA(String name) {
          
   
        this.name = name;
    }

    public String getName() {
          
   
        return name;
    }

    public void setName(String name) {
          
   
        this.name = name;
    }
}

class BBB extends AAA{
          
   
    private String gender ;

    public BBB(String name, String gender) {
          
   
        super(name);
        this.gender = gender;
    }

    public String getGender() {
          
   
        return gender;
    }

    public void setGender(String gender) {
          
   
        this.gender = gender;
    }
}

class CCC extends BBB{
          
   
    private String  stu_id;

    public CCC(String name, String gender, String stu_id) {
          
   
        super(name, gender);
        this.stu_id = stu_id;
    }

    public String getStu_id() {
          
   
        return stu_id;
    }

    public void setStu_id(String stu_id) {
          
   
        this.stu_id = stu_id;
    }
}
经验分享 程序员 微信小程序 职场和发展