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));
}
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啊!
为什么子类可以这样访问父类的成员变量?
真的凌乱了!
大神看到,能否指教以下?
**********************************************************************************************************************************************************