试着写了一段代码,主要考察子类继承父类私有数据成员的情况
class Father
{
private int i;
Father(int i)
{
this.i = i;
System.out.println("Father is gouzao !");
}
public void getfather()
{
System.out.println(i);
}
}class Son extends Father
{
private int j;
Son(int i,int j)
{
super(i);
System.out.println("Son is gouzao");
this.j = j;
}
public void getson()
{
System.out.println(j);//这里如果改成System.out.println(i,j)却通不过编译
}
}class Privatejicheng
{
public static void main(String[] args)
{
Father f = new Father(1);
f.getfather();
Son s = new Son(1,2);
s.getson();
s.getfather();//这句话编译运行都通过,为什么子类还能访问到private的数据变量
}
}请各位朋友帮帮忙。谢谢!
class Father
{
private int i;
Father(int i)
{
this.i = i;
System.out.println("Father is gouzao !");
}
public void getfather()
{
System.out.println(i);
}
}class Son extends Father
{
private int j;
Son(int i,int j)
{
super(i);
System.out.println("Son is gouzao");
this.j = j;
}
public void getson()
{
System.out.println(j);//这里如果改成System.out.println(i,j)却通不过编译
}
}class Privatejicheng
{
public static void main(String[] args)
{
Father f = new Father(1);
f.getfather();
Son s = new Son(1,2);
s.getson();
s.getfather();//这句话编译运行都通过,为什么子类还能访问到private的数据变量
}
}请各位朋友帮帮忙。谢谢!
2 只是使用父类的方法,至于父类方法里用到些什么,和子类无关。
3 看来你确实得好好看看基础
(2)楼上的说的没错,你没有直接访问private的数据,而是通过调用public方法访问的,自然可以的。
不能访问指的是不能直接访问,而不是不存在的或者是不能通过其它方法访问。
这里是通过public void getfather()方法访问!
子类也不能访问
因为Son继承Father,同时继承了getfather()方法,你调用了getfather()方法而没有直接去取它的私有变量i,倘若你在mian方法中出现f.i的字样,编译便不能通过。System.out.println(j);//这里如果改成System.out.println(i,j)却通不过编译
println()是一个方法,它需要接受的是一个String变量,你传入i,j两个整形值编译肯定通不过。并且i是父类的私有变量,除了Father类自己的成员,其它均不能调用i