关于Java多态性 向上转型问题
classEmployee{voiddepoit(){System.out.println("inclassEmployee!");}}classManagerexten...
class Employee {
void depoit() {
System.out.println("in classEmployee!");
}
}
class Manager extends Employee {
void depoit() {
System.out.println("in classManager!");
}
}
public class Question {
public static void main(String args[]) {
Manager man = new Manager();
Employee emp1 = new Employee();
Employee emp2 = (Employee) man;
man.depoit();
emp1.depoit();
emp2.depoit();
}
}
是不是向上转型优先调用子类自己的方法 那向下转型呢 展开
void depoit() {
System.out.println("in classEmployee!");
}
}
class Manager extends Employee {
void depoit() {
System.out.println("in classManager!");
}
}
public class Question {
public static void main(String args[]) {
Manager man = new Manager();
Employee emp1 = new Employee();
Employee emp2 = (Employee) man;
man.depoit();
emp1.depoit();
emp2.depoit();
}
}
是不是向上转型优先调用子类自己的方法 那向下转型呢 展开
1个回答
2016-05-05 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
参考下面的
“向上转型后,父类也只能调用父类已经有的方法”。但是子类如果覆盖了父类的方法,那么即使向上转型,方法的行为也表现为覆盖后的行为。这也是多态的一种体现。向上转型更多的用来体现一种编程上的“约定”。所有继承某个类或者实现某个接口的类,一定包含某个方法,这样在调用的时候,使得你也不必关系具体的实现细节,只要知道“这个类型中的某个方法能帮我完成工作”就可以了。
向下转型,是“引用的类型”的变化,不是对象实例类型的变化。new什么,就是什么。不会因为向上或者向下转型而改变自己的类型。
“向上转型后,父类也只能调用父类已经有的方法”。但是子类如果覆盖了父类的方法,那么即使向上转型,方法的行为也表现为覆盖后的行为。这也是多态的一种体现。向上转型更多的用来体现一种编程上的“约定”。所有继承某个类或者实现某个接口的类,一定包含某个方法,这样在调用的时候,使得你也不必关系具体的实现细节,只要知道“这个类型中的某个方法能帮我完成工作”就可以了。
向下转型,是“引用的类型”的变化,不是对象实例类型的变化。new什么,就是什么。不会因为向上或者向下转型而改变自己的类型。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询