【Day18】多态(理解与应用)

1、多态概述

        多态是Java面向对象继封装、继承后的最后一个特征。

2、理解:

        例如:学生,通过学生类确定确定是哪一个学生,就是通过父类,找到其对应的子类。

        注意:多态的前提是有关系(子父类),没有关系找不到,且必须重写父类的方法

3、格式:

        类名 对象名=new 子类名();
        通过父类对象指向子类方法、属性。称(向上转型)

        子类名 对象名 = (子类名)父类对象;
        通过子类对象,指向父类方法、属性,因为我们不知道它们是否有关系,所以我们引出instanceof关键字,判断是否能进行转型。称(向下转型(强转))

4、instanceof:

        主要用于向下转型,返回类型为布尔类型

5、多态特点:

        编译看作,运行看右。

举例:通过一个小的继承,可以看出,如果不继承,在编译的时候就会报错

public class PolymorphismTest {
    public static void main(String[] args) {
//        向上转型
//        ----------------------------------------------------------------
//        这就是多态,左边是父类,右边是子类创建一个对象

        

Polymorphism1 pp=new Polymorphism2();


        
//        编译时看左边,pp是父类对象,.show():是子类重写父类的方法
//        通过父类的对象,指向子类的重写方法
        pp.show();
//        ----------------------------------------------------------------
        
        
//        向下转型,
//        ----------------------------------------------------------------
//        强转,跟int数据类型转byte数据类型的格式相似
//        int num1=100;
//        byte num2=(int)num1;
//        Polymorphism3 pp2 = (Polymorphism3)pp;        //报错,因为,Polymorphism3不是Polymorphism1的子类
      

 Polymorphism2 pp2 = (Polymorphism2)pp;
        pp2.show();


//        简单我们可以直接看的出来,但是很多时候我们是不确定的,这时候就要引入instanceof关键字了
        
//        **********************************************
//        instanceof返回值是布尔类型的数据
      

 if(pp instanceof Polymorphism2){
//            如果为真就强转
            Polymorphism2 pp3 = (Polymorphism2)pp;
            pp3.show();
        }

//        ----------------------------------------------------------------
        
    }
}

class Polymorphism1{
    public void show(){
        System.out.println("我是父类");
    }
}


class Polymorphism2 extends Polymorphism1{
    
//    重写父类里的方法
    public void show(){
        System.out.println("我是子类(1)的方法");
    }
}


class Polymorphism3{
//    重写父类里的方法
    public void show(){
        System.out.println("我是子类(2)的方法");
    }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

老板大气,I am happy

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值