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

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

  • 相关阅读:
    Ridis学习笔记
    VMware虚拟机安装教程
    Spring中获取Bean的几种方式
    jQuery中的常用事件
    乱码解决
    自动装配
    通配符用法
    Spring
    Spring mvc简单案例
    jdbctemplate
  • 原文地址:https://www.cnblogs.com/guochengfirst/p/9385446.html
Copyright © 2011-2022 走看看