zoukankan      html  css  js  c++  java
  • Java

    以下Animal为父类,Dog,Cat作为子类,分别继承Animal

    class Animal{
        public void shout(){
            System.out.println("叫了一声");
        }
    }
    
    class Dog extends Animal{
        public void shout() {
            System.out.println("旺旺旺");
        }
        public void seeDoor() {
            System.out.println("看门中");
        }
    }
    
    class Cat extends Animal{
        public void shout() {
            System.out.println("喵喵喵");
        }
    }

    总结:

      1. Dog对象转成Animal对象可行,如d2

          Cat对象转成Animal对象可行,如c2

      2. d2作为Animal对象转成Dog对象可行。如d3,且可执行一个Dog特有的方法

      3. c2作为Animal对象转成Dog对象,编译通过,运行报错,显示 java.lang.ClassCastException,类型转化出错

    实例代码:

    1. Dog对象转成Animal对象可行,如d2

        Cat对象转成Animal对象可行,如c2

    public class TestPoym{
        public static void main(String[] args) {
            Dog d1 = new Dog();
            animalCry(d1);
            Animal d2 = new Dog();  //向上转型
            animalCry(d2);

          Animal c1 = new Cat();
          animalCry(c1);
          Animal c2 = new Cat();
          animalCry(c2);

        }
        
        static void animalCry(Animal a) {
            a.shout();
        }
    }

    结果:

    2. d2作为Animal对象转成Dog对象可行。如d3,且可实现一个Dog特有的方法,看门

    public class TestPoym{
        public static void main(String[] args) {
            Dog d1 = new Dog();
            animalCry(d1);
            Animal d2 = new Dog();  //向上转型
            animalCry(d2);
            Animal c1 = new Cat();
            animalCry(c1);
            Animal c2 = new Cat();
            animalCry(c2);
            
            Dog d3 = (Dog)d2;  //向下转型
            d3.seeDoor();
            
        }
        
        static void animalCry(Animal a) {
            a.shout();
        }
    }

    结果:

    3.  c2作为Animal对象转成Dog对象,编译通过,运行报错,显示 java.lang.ClassCastException,类型转化出错

    代码:

    public class TestPoym{
        public static void main(String[] args) {
            Dog d1 = new Dog();
            animalCry(d1);
            Animal d2 = new Dog();  //向上转型
            animalCry(d2);
            Animal c1 = new Cat();
            animalCry(c1);
            Animal c2 = new Cat();
            animalCry(c2);
            
            Dog d3 = (Dog)d2;  //向下转型
            d3.setDoor();
            
            Dog c3 = (Dog)c2;  //编译通过,运行出错,显示强制转换出错
        }
        
        static void animalCry(Animal a) {
            a.shout();
        }
    }

    结果:

  • 相关阅读:
    Zara带你快速入门WPF(1)---开篇
    Vue Route Building the UI back-end framework
    TDX指标的理解与改造(价格到达指标线提醒)
    Vue生命周期详解
    Vue轻松入门,一起学起来!
    NodeJs安装步骤与淘宝镜像
    使用npm安装配置vue
    JavaScript面向对象
    vim常用快捷键
    python常用命令
  • 原文地址:https://www.cnblogs.com/kl-1998/p/10641089.html
Copyright © 2011-2022 走看看