日期:2014-05-20  浏览次数:20697 次

能通过子类对象向上转型为父类对象调用父类static final修饰的方法吗?

class Ghu {

/**
* @param args
*/
private final void kis() {
  System.out.println("hello");
 }
 class ABC extends Ghu{
  public final void kis(){
  System.out.println("javac");
}
}
  public class Abcd{
public void main(String[] args) {
// TODO Auto-generated method stub
  ABC abc=new ABC();
  abc.kis();
  Ghu ab=abc;/*将子类对象向上转型为父类对象*/
  ab.kis();
   
   
   
}

}


------解决方案--------------------
ab调用的就是父类的kis

而abc调用的就是子类的kis
------解决方案--------------------
你父类的方法是私有的 怎么可以访问啊
------解决方案--------------------
应该不能访问吧,
Ghu ab=abc;/*将子类对象向上转型为父类对象*/
这里的ab还是指向子类ABC的对象啊,不好访问父类的私有方法的。

lz代码都写完了,试一下不就知道结果了。
------解决方案--------------------
楼主的代码有问题啊
1.ABC是非静态内部类 不能如此实例化吧 必须要父类的实例才行
2.私有的方法只能在类内部访问吧 外部怎么能访问

------解决方案--------------------
代码有问题啊 。 子类是不能继承父类私有方法的!
------解决方案--------------------
看, static 都没找到,问题与标题不符。
------解决方案--------------------
不 final 是常量 是不能更改的意思 意思就是说 
 子类继承父类的这个方法 是不能被修改的
 

------解决方案--------------------
楼主的 main 方法是在子类中的,子类中不能调用父类的私有方法
------解决方案--------------------
不用转什么都可以用 

也就是说 可以转!
 但你写的 代码有错误
------解决方案--------------------
记住static的方法是不存在多态的概念的

不要用“对象.静态方法”的方式访问,而一直坚持使用“类名.静态方法”的方式调用就不会出错
------解决方案--------------------
你没搞错吧!

把继承写在内部类!

内部类可以访问外部类的一切属性(包括私有的)!



------解决方案--------------------
探讨
class Ghu {

/**
* @param args
*/
static final void kis() {
System.out.println("hello");
}
}
class ABC extends Ghu{
public final void k(){
System.out.println("javac");
}
}
publ……