• 多态与类型的一点理解


    在JAVA中,一个对象只能有一种类型,比如:Employee e = new Employee(),e是Employee类(也相当于一种自定义的类型)的一个对象。但是,一个变量却可以指向不同类型的对象,那么可以说变量时具有多态性的。对于一个类的继承:

    public class Employee{

      String name;

      int salary;

      public String getDetails(){

      }

    }

    public class Manager extends Employee{

      String department;

      public String getDetails(){

      }

    }

    如下对对象的声明我们可以理解:

    Employee e = new Employee();

    Manager m = new Manager();

    e是Employee的一个对象,m是Manager的一个对象。但是,如果是这样定义又该如何理解呢:Employee m = new Manager()。

    此时m作为Employee的一个对象,而不是Manager的对象,因此这样的引用时不允许的:

    m.department = "Finance";//非法,编译时就会报错

    可能有些人不太理解,为什么明明是new了一个Manager,为什么m却不能访问Manager的属性变量。原因是在编译阶段,变量m是Employee的类型,编译器并不管运行时m指向的具体对象是Employee的对象还是Manager的对象,它只能访问Employee里面定义的变量和方法。也就是说,编译时看数据类型。

    那么如果要访问Manager里面的属性变量department,可以进行强制类型转换,把它还原成Manager类型,方法如下:

    Employee m = new Manager();

    Manager n = (Manager)m;

    n.department = "Finance";//这就是合法的了

  • 相关阅读:
    JavaBasics-15-多线程
    4.10 SpringCloud微服务技术栈
    4.3 Linux操作系统_Unix操作系统
    4.2 互联网项目架构演进
    4.1 微服务框架_引言
    4.6 Redis
    SpringBoot
    docker-dockerfile实战构建文件
    docker 安装私有仓库 registry(离线)
    基础K8S搭建(20209.08亲测成功)
  • 原文地址:https://www.cnblogs.com/micky1989/p/3021123.html
Copyright © 2020-2023  润新知