当前位置: 代码迷 >> J2SE >> 父类的引用指向子类的对象 为什么只能调用继承自父类的方法,而不能调用其他方法?该怎么解决
  详细解决方案

父类的引用指向子类的对象 为什么只能调用继承自父类的方法,而不能调用其他方法?该怎么解决

热度:117   发布时间:2016-04-24 01:21:06.0
父类的引用指向子类的对象 为什么只能调用继承自父类的方法,而不能调用其他方法?
Java code
 class Base{   public void men1()  {   System.out.println("base men1 called_______");  }  public void men2()  {   System.out.println("base men2 called_______");  }} class Sub extends Base{    private void men1()//报错  {   System.out.println("Sub men1 called_______");  }  public  void men2()  {   System.out.println("Sub men2 called_______");  }  public  void men3()  {   System.out.println("Sub men3 called_______");  }} public class test {     public static void main(String arg[])     {         Base base=new Sub();         base.men2();              } }

1、为什么注释的部分会报错,为什么复写父类的方法的时候不能降低访问控制?
2、为什么Base base=new Sub(); base不能调用men2() 只能调用继承自父类的方法?
希望大家不要轻易的丢下一句多态。多分析下原因。、谢谢了 


------解决方案--------------------
1。父类的public是向外提供的接口,也是一种向客户程序的约定,因为子类可以替代父类,所以必须遵从这种约定。protected可以认为是向子类提供的约定,同理。

2。当你使用base调用方法的时候,编译器只知道它的类型是Base,所以只能使用Base定义的方法。
至于调用时能正确调用base所指向的实际对象的方法,那就是多态了,是运行的时候发生的行为。
  相关解决方案