关于java多态

概念

多态是面向对象程序设计的一个重要特征,指同一个实体具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。

例如小猫小狗都是动物,他们都需要吃东西等相同特征,但他们爱吃的东西不一样,这就是重写。多态对象只能调用父类中定义子类中重写的功能,但不能调用子类特有功能,实现代码统一

特点

多态前提是继承,且要有方法的重写

父类引用指向子类对象

使用

成员变量使用父类的

成员方法使用子类的

编译由父到子,运行由子到父



/*本类用于测试多态成员的使用情况*/
public class Test0 {
    public static void main(String[] args) {
        //创建纯子类对象
        Dog2 d = new Dog2();
        System.out.println(d.sum);//子类自己的属性
        d.eat();//小狗爱吃骨头棒,子类自己的方法
        //创建多态对象
        Animal a = new Dog2();
        /*多态中,成员变量使用的是父类的*/
        System.out.println(a.sum);//10
        /*多态中,方法的声明使用的是父类的,方法体使用的是子类的*/
        a.eat();//小狗爱吃骨头棒
        /*多态中,调用的静态方法是父类的,因为多态对象把自己看作是父类类型
        * 直接使用父类中的静态资源*/
        a.play();//玩啥都行
        Animal.play();
    }
}
//创建父类
class Animal{
    //创建父类的成员变量
    int sum = 10;
    //创建父类的普通方法
    public void eat(){
        System.out.println("吃啥都行");
    }
    //定义父类的静态方法play
    public static void play(){
        System.out.println("玩啥都行");
    }
}
//创建子类
class Dog2 extends Animal{
    //定义子类的成员变量
    int sum = 20;
    //重写父类的方法
    @Override
    public void eat(){
        System.out.println("小狗爱吃骨头棒");
    }
    //创建子类的静态方法play
    public static void play(){
        System.out.println("小狗喜欢玩皮球~");
    }
}

运行结果:

优点

代码更加灵活:无论右边new的时候换成哪个子类对象,等号左边调用方法都不会变化。

提高程序的拓展性:定义方法的时候,使用父类类型作为参数,将来使用时,使用具体的子类类型操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值