class Fu
{
private int num = 7;
}
class Zi extends Fu
{
int num = 9;
void show()
{
System.out.println(super.num);
}
}
class Extends2
{
public static void main(String[] args)
{
Zi z = new Zi();
z.show();
}
}
所报提示,num可以再Fu中访问private私有。为什么在show方法打印语句中加入super不可以,加入this就可以,谢谢!
父类中可以定义一些私有的变量,但是这些私有变量是无法被他们的子类所继承的,所以你刚才用super.num是访问不到的,private修饰的变量作用域只能在本类中使用。你通过this.num调用到的只是子类中的num如果你想要访问父类中的私有变量的话,不防给它们提供一个出口,就是类似于setter(),getter()这些方法,下边我给你举个例子。
class Fu{
private int num;
public void setNum(int num){
this.num=num;
}
public int getNum(){
return this.num;
}
}
class ExtendDemo extends Fu{
public void show(){
System.out.println(super.getNum());//这样就可以访问到父类中的num了
}
}
public class Test(){
public static void main(String args[]){
ExtendDemo demo=new ExtendDemo ();
demo.show();
}
}