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

java中关于继承中隐藏父类的方法
super可以访问父类中被隐藏的方法吗
我写的这个程序是覆盖还是还是隐藏啊
package hide;

class ex 
{
public static void print(){
System.out.println("asdf");
}

}


class ex2 extends ex
{
public void l()
{
super.print();
}
public static void print()
{
System.out.println("asdf1");
}

}


public class ex1
{
public static void main(String[] args)
{
ex l =new ex();
ex2 l1=new ex2();
l.print();
l1.print();
l1.l();
l=l1;
l.print();


}
}


------解决方案--------------------
父类的方法在父类中没有被覆盖,因为子类本身就具有父类的方法,只能说在子类中父类的方法被覆盖了,但是在父类中这个方法还是这个方法。

因为在父类里面这个方法没有变,所以super.print()还是原来的方法。
------解决方案--------------------
1、父类的static方法不能被子类覆盖,如果是实现多态,不要声明static
楼主执行
ex x =new ex2();
x.print();
打印的会是asdf

2、如果要访问父类的static方法,可以用类名.方法。因为static说到底还是属于类的。

------解决方案--------------------
探讨
引用:
static方法没有所谓的隐藏或覆盖,属于类级别的
通过类名就能访问了

不是吧,我看书上把子类中和父类同名的静态方法分为隐藏这一类,把实例方法分为覆盖这一类

------解决方案--------------------
探讨
引用:
static方法没有所谓的隐藏或覆盖,属于类级别的
通过类名就能访问了

不是吧,我看书上把子类中和父类同名的静态方法分为隐藏这一类,把实例方法分为覆盖这一类