zoukankan      html  css  js  c++  java
  • 多态--强转--多态方法返回值类型

    package duotai;

    public class Animal {
    int age;

    public void eat() {
    System.out.println("吃饭");
    }

    public void sleep() {
    System.out.println("睡觉");
    }
    }

    ----------狗狗类--------

    package duotai;

    public class Dog extends Animal {

    @Override
    public void eat() {
    System.out.println("吃肉");

    }

    public void guard() {
    System.out.println("狗狗看门");
    }

    }

    ---------猫类---------

    package duotai;

    public class Cat extends Animal {

    }

    ------------多态-----------------

    package duotai;

    /*
    * 多态
    */
    public class Test01 {
    public static void main(String[] args) {
    Dog dog = new Dog();
    // 父类引用指向子类对象
    Animal a = new Dog();
    a.eat();
    a.sleep();
    }
    }

    -------------强制类型转换--------两个类之间必须要有继承关系-----------

    package duotai;

    /*
    * 强制类型转换
    *两个类之间必须要有继承关系
    */
    public class Test02 {
    public static void main(String[] args) {
    Animal a = new Dog();
    // 因为Animal中没有guard方法,所以不能直接调用
    // 想要调用子类特有的方法的时候,需要进行强制类型转换
    // 从大类型转向小类型的时候也叫作向下转型
    Dog dog = (Dog) a;

    dog.guard();
    // 编译没有问题,但是在运行的时候会报出ClassCastException
    // 类转型错误
    // 可以通过instanceof关键字判断当前对象是否属于一个类型
    // a-->桌子上的水果 Cat--->相当于你心中的苹果
    if (a instanceof Dog) {
    Dog dog2 = (Dog) a;
    System.out.println("一样");
    } else {
    System.out.println("不一样");
    }
    if (a instanceof Cat) {
    Cat cat = (Cat) a;
    System.out.println("一样");
    } else {
    System.out.println("不一样");
    }
    }
    }

    --------------使用多态作为方法的返回值类型--------------

    package duotai;

    /*
    * 使用多态作为方法的返回值类型
    */
    public class Test03 {
    public static void main(String[] args) {
    Animal animal = getname(0);
    animal.eat();
    if (animal instanceof Dog) {
    Dog dog = (Dog) animal;
    dog.guard();
    }
    }

    // 根据传入的数据来判断创建哪个动物的对象
    // 通用
    private static Animal getname(int i) {
    if (i == 0) {
    return new Dog();
    } else {
    return new Cat();
    }

    }
    }

  • 相关阅读:
    开源.net 混淆器ConfuserEx介绍
    变分自编码器(Variational Autoencoder, VAE)通俗教程
    word embedding
    深度学习之自编码器AutoEncoder
    终于有人把P2P、P2C、O2O、B2C、B2B、C2C 的区别讲透了!
    强行杀windows服务
    Android快速开发系列 10个常用工具类
    判断Service是否已经启动
    Android app widget中实现跑马灯效果(非widget部件也实用)
    如何用MAT分析Android程序的内存泄露
  • 原文地址:https://www.cnblogs.com/Koma-vv/p/9561544.html
Copyright © 2011-2022 走看看