java-为什么可以这样访问父类的中的变量?

public class SuperPerson extends Father {

static int ssp = 10;
int sbf = 11;


static {
System.out.println("SuperPerson类的静态代码块!" + (ssp + 10));
// System.out.println("SuperPerson类的动态代码块!"+(sp+10)); //不能在静态代码区使用非静态变量
}


{
// int sbf = 11; //这个声明是没有意义的!
System.out.println("SuperPerson类的动态代码块!" + (ssp + 10));
System.out.println("SuperPerson类的动态代码块!" + (spf + 10)); // 我凌乱了,居然使用的是父类的spf!没有通过super访问了父类的成员变量!


// int sp = 21; //这个声明是没有意义的!
}


public SuperPerson() {
System.out.println("SuperPerson类的构造方法!");
}


public static void main(String[] args) {
new SuperPerson();
}


}


class Father {
public Father() {
System.out.println("Father类的构造方法!");
}


static int ssp = 10;
int spf = 24;


static {
// System.out.println("SuperPerson类的静态代码块!");
System.out.println("Father类的静态代码块!" + (ssp + 10));
// System.out.println("SuperPerson类的动态代码块!"+(sp+10)); //不能在静态代码区使用非静态变量
}


{
System.out.println("Father类的动态代码块!" + (ssp + 10));
System.out.println("Father类的动态代码块!" + (spf + 10));
}


}


以下是程序运行的输出结果!

Father类的静态代码块!20
SuperPerson类的静态代码块!20
Father类的动态代码块!20
Father类的动态代码块!34
Father类的构造方法!
SuperPerson类的动态代码块!20
SuperPerson类的动态代码块!34
SuperPerson类的构造方法!


********************************************************************************************************************************************************

Father类的动态代码块!34

为什么是34?

sbf变量是在父类中定义的啊?子类中定义的 int sbf = 11啊!

为什么子类可以这样访问父类的成员变量?

真的凌乱了!

大神看到,能否指教以下?


**********************************************************************************************************************************************************










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值