Java中的多态

一、多态的三个前提

1、要有继承(接口实现)关系

2、子类要重写父类方法

3、父类引用指向父类对象

二、多态:同一个行为具有不同表现形式或形态的能力,即对象多种表现形式的体现

三、使用规则

Father man=new Son();

成员变量:看等号左边,左边是谁就优先谁,没有就去父类找,还是没有就报错(编译看左边,运行看左边)

成员方法:该方法属于谁,谁就优先,没有就找父类(编译看左边,运行看右边)

父类Father

package com.hc.duotai;

public class Father {
    public int age = 50;

    public String show() {
        return "Father类中show方法显示我的年龄是:" + this.age;
    }
}

子类Son

package com.hc.duotai;

public class Son extends Father {
    public int age = 22;

    //重写的方法
   @Override
    public String show() {
        return "Son类中的show方法显示我的年龄是:" + this.age;
    }

    public  void newMethod(){
        System.out.println("在son类中增加的新方法");
    }
}

测试Test

package com.hc.duotai;

public class Test2 {

    public static void main(String[] args) {

        //向上转型:父类的引用变量指向子类的对象,就完成了向上转型
        //两种情况 1  创建对象时    父类型(接口)  对象名 = new 子类型()
        //        2   在设计方法参数或返回值类型或类中设计属性时   声明为父类型(接口),传入的可能是父类型的子类型

        //向上转型带来的问题:如果new 出来的子类型增加了新的方法,则无法通过父类型直接调用,必需向下强转成子类型才可以调用到

        Father f = new Son();  //向上转型
        
        String ret=   f.show();
        System.out.println(ret);

        //要调用new出来的类型Son的新方法,必需向下转型
        Son s = (Son)f;//把f强转成son类型
        s.newMethod();//新方法的调用

        //假设现在的son中重写的show方法去掉了
    }
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值