zoukankan      html  css  js  c++  java
  • 强制类型转换

    1,向上转型,安全,具体化到抽象化

    2,向下转型,不安全,抽象化到具体化

    建立两个对象,动物抽象类Animal和狗狗类Dog

    public abstract class Animal {
        public abstract  void  dosomething();
    }
    
    public class Dog extends Animal{
        private String name;
    
        public Dog(String s) {
            this.name=s;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public void dosomething() {
            System.out.println("狗狗会跑");
        }
    }
    

      写一个测试类

    public class Test {
        public static void main(String[] args) {
            //向上转型,安全,将狗对象赋值给动物变量
            Animal animal=null;
            Dog dog=new Dog("小黄");
            animal=dog;
            System.out.println(((Dog) animal).getName());//小黄
    
            //向下转型,不安全,将动物对象赋值给狗变量
            Dog dog1=null;
            //dog1=animal;//编译报错:incompatible type 不相容类型
            //把animal强转为Dog类型,编译通过
            dog1= (Dog) animal;
            System.out.println(dog1.getName());//小黄
        }
    }
    

     总结:将一个对象赋值给一个变量,主要看该对象是不是这个变量的一个实例,如将狗对象赋值给动物变量(向上转型,安全,具体化到抽象化),狗是动物的一个实例,反之,如果将动物对象赋值给狗变量(向下转型,不安全,抽象化到具体化),则为动物是狗的实例,不符合逻辑,

  • 相关阅读:
    hi35183e增加exfat文件系统的支持(转)
    UDP 单播、广播和多播(转)
    linux系统中,kill -3查看java进程状态无效的解决方法
    js是用什么语言编写实现的
    云海天教程
    Docker下安装MySQL
    如何延长手机的使用寿命时间
    如何延长空调使用寿命?
    Linux 发送邮件
    Linux jstack命令
  • 原文地址:https://www.cnblogs.com/guochengfirst/p/9385446.html
Copyright © 2011-2022 走看看