多态性的使用

面向对象的三大特性:封装性、继承性、多态性。

多态性:一个对象拥有多种形态。

一、代码当中体现多态性:
父类引用指向子类对象
父类名称 对象名 = new 子类名称();或者 接口名称 对象名 = new 子类名称();
public class fu {
    public void method(){
        System.out.println("这是父类");
    }

    public  void methodfu(){
        System.out.println("父类特有");
    }
}
public class zi extends fu{
    @Override
    public void method() {
        System.out.println("子类方法");
    }
}
public class main {
    public static void main(String[] args) {
        //使用多态的写法
        //左侧父类的引用,指向右侧的子类
        fu obj = new zi();

        obj.method();    //输出子类方法

        obj.methodfu();  //也可以调用,左父右子就叫多态。子类被当做父类来使用,输出父类特有
    }
}
二、成员变量在多态中的应用:
访问成员变量的两种方法:
1.直接通过对象名称访问成员变量,看等号左边是谁,优先用谁,没有则向上找
2.间接通过成员方法访问成员变量,看该方法属于谁,优先用谁,没有则向上找
三、在多态的代码中,成员方法的访问规则:
看new的是谁,就优先用谁,没有则向上找
口诀:编译看左边,运行看右边。是看obj的左边右边
对比:
成员变量:编译看左边,运行还看左边
成员方法:编译看左边,运行看右边

 

 

四、向上转型是安全的,但是也有弊端:对象一旦向上转型为父类,那么久无法调用子类原本特有的方法
解决方案:向下转型,还原
格式:子类 对象名 = (子类) 父类对象名;
五、如何才能知道一个父类引用的对象,本来是什么子类?
        格式:对象 instanceof 类型
        这将会得到一个布尔值结果,也就是判断前面的对象能不能当中后面类型的实例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值