Java多态

一.多态:同一行为具有不同表现形式

A.动态多态(运行时多态,晚时绑定,延时绑定,后期绑定)

        子类重写了父类的方法,每个子类的重写方法的内容不同;

         一个父类类型变量等于子类创建的对象(上转型对象)Fu fu=new Zi();(父类对象调用子类对象中的重写方法)

        fu指向不同子类创建的对象,fu调用各子类被重写的方法会有不同结果,称为动态多态。

B.静态多态(编译时多态,早绑定)

       同一类中方法重载可实现静态多态

二.上转型对象

Fu fu=new Zi();

A.fu不能调用子类中新定义的属性与方法

B.当子类成员变量与父类成员变量名字重复,则上转型对象调用的是父类中的方法。

三.下转型对象

将上转型对象强制类型转换(向下转型)

Zi z=(Zi)fu;

上转型对象向下转型后可以调用子类新建方法和属性

四.代码示例

public class FireFu {
    
    String a="父类成员变量a";
    
    public void fire() {
        System.out.println("开火");
    }

}
 

public class FireZi extends FireFu{
    
    String a="子类一与父类同名成员变量a";
    String z="子类一成员变量z";
    
    public void fire() {
        System.out.println("手枪开火");
    }

}
 

 

public class FireZi2 extends FireFu{
    
    public void fire() {
        System.out.println("步枪开火");
    }

}
 

 

public class Test {

    public static void main(String[] args) {
        FireFu f=new FireZi();
        f.fire();
        
        System.out.println("********");
        f=new FireZi2();    
        f.fire();
        
        System.out.println("********");
        f=new FireZi();
        //System.out.println(f.z);//上转型对象不能调用子类新建属性和方法
        FireZi g=(FireZi)f;
        System.out.println(g.z);//上转型对象向下转型后可以调用子类新建属性和方法
    }

}

运行结果:

手枪开火
        ********
        步枪开火
        ********
        子类一成员变量z
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值