多态概念及简述

  1. 继承或实现是多态的前提。
  2. 一个对象拥有多种形态,简称“对象的多态性”。
  3. 方法才能覆盖重写,成员变量不可覆盖重写。

 

父类引用指向子类对象,格式:

父类名称 对象名 = new 子类名称();

或者:

接口名称 对象名 = new 实现类名称();

  • 多态访问成员变量的两种方式:

    • 直接通过对象名称访问成员变量,看等号左边是谁,优先用谁,没有则向上找。
public class Demo{
    public static void main(String[] args){
        //使用多态
        Fu f = new Zi();

        //等号左边是Fu,所以显示 35.
        System.out.println(f.age);
    }
}

public class Zi extends Fu{
    int age = 10;
}

public class Fu{
    int age = 35;
}
  • 间接通过成员方法使用访问,看方法属于哪个类,则优先调用此类,没有则向上找。     
public class Demo{
    public static void main(String[] args){
        //使用多态
        Fu f = new Zi();

        //子类没有覆盖,show()方法属于Fu, 100.
        System.out.println(f.show());

        //子类覆盖父类方法,调用子类方法, 50.
        System.out.println(f.show());

    }
}

public class Zi extends Fu{
    int age = 10;
    int num = 50;
}

public class Fu{
    int age = 35;
    int num = 100;
    public void show(){
        System.out.println(num);
    }
}
  •   多态访问成员方法:

    • 看new的是谁,优先用谁,没有则向上找。

编译看左边,运行看右边。

public static void main(String[] args){
    Fu obj = new Zi();

    obj.method();//父子都有,优先用右边。
    obj.methodFu();//子没有,向上找,用父的。
}

public class Zi extends Fu{
    public void method(){
    }
}

public class Fu{
    public void method(){
    }

    public void methodFu(){
    }
}

编译看左,运行看右。


  • 对象的上下转型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值