• 多态--强转--多态方法返回值类型


    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();
    }

    }
    }

  • 相关阅读:
    染色问题的算法(转)
    函数的定义域和定义区间的区别(转)
    详解c++指针的指针和指针的引用(转)
    母函数(转)
    别人整理的DP大全(转)
    HDU 1430 魔板(康托展开+BFS+预处理)
    ZZULIOJ 1726 迷宫(BFS+小坑)
    NBUT 1635 Explosion(最小顶点覆盖)
    NBUT 1602 Mod Three(线段树单点更新区间查询)
    NBUT 1028 该减肥了(简单递推)
  • 原文地址:https://www.cnblogs.com/Koma-vv/p/9561544.html
Copyright © 2020-2023  润新知