为了账号安全,请及时绑定邮箱和手机立即绑定

向上转型和向下转型

向上转型和向下转型

java小学三班 2016-09-10 11:12:57
//parent class class Employee{     public Employee(){         System.out.println("Employee");     }     public  void print()     {         System.out.println("Employee Details");     } } // child class  class Manager extends Employee {     public Manager()     {         System.out.println("Manager");     }     public void print()     {         System.out.println("Manager Details");     } } // child class    class Supervisor extends Employee    {        public Supervisor()        {            System.out.println("Supervisor");        }        public void print()        {            System.out.println("Supervisor Details");        }    }    class Test     {        public static void main(String[] args) {            Employee emp1, emp2; //reference             Manager m1;            Supervisor s1;            emp1 = new Manager();            emp2 = new Supervisor();            Employee emp3 = new Manager();//Upcasting of Object            m1 = (Manager) emp1;     // Employee reference but Manager Object -> DownCasting            s1=(Supervisor) emp2;            emp3.print();                               }    }    运行结果: Employee Manager Employee Supervisor Employee Manager Manager Details这里面有几个问题我不明白。1.例如class Employee中的 public Employee()和 public  void print()这两个语句有啥区别?他们的作用是不是输出Employee和Employee Details?2.最后psvm中的Employee emp1, emp2; 把Employee创建为两个对象是什么意思?  这一句中的emp1和emp2是不是指代的一样的意思?只是在后面把其指代为不同的对象?3.emp1 = new Manager();  new了一个Manager()对象,并被emp1指向,但是此时的emp1是等于Manager class中的"Manager"还是"Manager Details"??4.运行结果是怎么运行的才得到的这样一个结果呢?emp3.print(); 是啥意思?小弟小白,希望大神悉心讲解。感谢感谢!
查看完整描述

2 回答

?
ziom

TA贡献948条经验 获得超1109个赞

我不知道你java学到了甚么程度,如果连public Employee()和 public  void print()这两个语句的区别都不清楚,后面三个问题也没必要去了解了,先学明白java基础语法再说。

查看完整回答
1 反对 回复 2016-09-10
点击展开后面1
?
夜很殇37

TA贡献6条经验 获得超2个赞

当你new的时候,会先执行父类的构造方法,再执行子类的构造方法

查看完整回答
反对 回复 2016-09-12
  • 2 回答
  • 0 关注
  • 1316 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信