首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

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

2012-04-18 
父类的引用指向子类的对象 为什么只能调用继承自父类的方法,而不能调用其他方法?Java code class Base{pub

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

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所指向的实际对象的方法,那就是多态了,是运行的时候发生的行为。

热点排行