java复习第十天[多态]

1.多态概念:

简介:多态是面向对象继承,封装之后的一大特性.

生活中”咖啡喵“是一个动物,同时也是只猫,那“咖啡喵”身上就出现了多态的情况,即是动物也是猫,那java中面向对象同样也可以描述一个事物的多种形态。在java中实现多态需要三个条件:

  • 子类继承父类
  • 子类重写父类的方法
  • 父类引用指向子类对象(多态的主要体现)

2.父类引用指向子类对象:

代码中格式为:

父类类型 name=new 子类类型();

父类引用指向子类,就是父类对象new一个子类对象,为了同一个行为具有多种的表达形式.

注意:

  • 多态是方法的多态,不是属性的多态
  • 多态是一个接口使用不同实例来实现不同方法的操作.

3.多态调用技巧:

调用成员变量看左边:

Animal animal=new Cat();
System.out.println(animal.age);

调用方法看右边:

Animal animal=new Cat();
animal.run();

4.关键字instanceof:

关键字instanceof返回值为布尔类型用来判断是不是这个的实例化,与is-a的关系,案例如:

Animal animal=new Animal();
Animal dog=new Dog();
Animal cat=new Cat();
System.out.println(dog instanceof Animal);//理解为dog对象是Animal吗? true
System.out.println(animal instanceof Dog);//理解为animal对象是Dog吗? false 动物不止有狗
System.out.println(cat instanceof Animal);//理解为cat对象是Animal吗? true
System.out.println(animal instanceof Cat);//理解为animal对象是Cat吗? false 动物不止有猫

5.上下转型: 

向上转型:子类对象转换为父类,小转大自动转,多态本身就是向上转型

父类类型 name=new 子类类型();

子类对象转为父类对象时可能会丢失本身独有的方法.

向下转型:父类对象转为子类,大转小强制转换

子类类型 name=(子类类型)父类对象;

用途:一般需要使用子类独有的方法才会向下转型

6.经典案例

答出下列代码会输出什么:

public class A {
    public void Eat(){
        System.out.println("爱吃大米饭");
    }
}
class B extends A{
    @Override
    public void Eat() {
        System.out.println("爱吃红烧肉");
    }

    public void Play(){
        System.out.println("爱玩游戏");
    }
}
class C extends B{
    @Override
    public void Play() {
        System.out.println("爱刷短视频");
    }
}

class Test_{
    public static void main(String[] args) {
        A a=new A();
        A b=new B();
        B c=new C();
        a.Eat();
        b.Eat();
        c.Play();
    }
}

7.通过方法实现多态 

package com.tang.servlet;

public class Animal {
    void chi() {
        System.out.println("爱吃饭");
    }

    void wan() {
        System.out.println("贪玩");
    }
}

class Car extends Animal {
    void chi() {
        System.out.println("爱吃鱼");
    }
}


class Test{
    public static void main(String[] args){
        Car car=new Car();
        show(car);
    }

    public static void show(Animal animal){
        animal.chi();
        animal.wan();
    }
}

或者使用方法进行多态的阐述结果如下:

爱吃鱼
贪玩

创作难免有错误和不当的地方,还请大家多多指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

123小步

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值