1. B继承A的时候B只是将A中的非private的字段和方法复制给自己,这个你可以在编译好的子类的Class文件中可以发现。
2. super(a);只对父类的字段赋值,当然如果子类继承了父类的字段的话也会被赋值的。以下是调试代码,楼主可以看看,虽然Class L_T1中y也是public的,但是如果你在子类中override了y,调用super(a)时仍然不能给子类的y赋值!
public class L_T1
{
public int y;
public L_T1(int ii)
{
y = ii;
}
}class L_TT extends L_T1
{
public int y;//注释掉和不注释掉这条语句super(a)产生的效果不同
public L_TT(int ii)
{
super(ii);
}
public static void main(String[] args)
{
L_T1 ll = new L_TT(3);
System.out.println(ll.y);
}
}
2. super(a);只对父类的字段赋值,当然如果子类继承了父类的字段的话也会被赋值的。以下是调试代码,楼主可以看看,虽然Class L_T1中y也是public的,但是如果你在子类中override了y,调用super(a)时仍然不能给子类的y赋值!
public class L_T1
{
public int y;
public L_T1(int ii)
{
y = ii;
}
}class L_TT extends L_T1
{
public int y;//注释掉和不注释掉这条语句super(a)产生的效果不同
public L_TT(int ii)
{
super(ii);
}
public static void main(String[] args)
{
L_T1 ll = new L_TT(3);
System.out.println(ll.y);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货