package basicjavaday08;
/**
* 代码块的执行顺序(同一个类中,继承的类中)
* 静态变量、静态方法存储在方法区中的静态区,随着类的生成而生成,随着类的消失而消失。
* 只要加载此类xxx.class文件则静态区静态代码块的数据就被创建。
* 而静态的方法需要使用静态的方式调用。
* @author gt.liu
* time 2016年10月13日 下午4:22:21
* BasicJava basicjavaday08 InheritDemo.java
*/
public class InheritDemo {
static{//静态代码块
int st1 = 100;
String st2 = "hello static";
System.out.println(st1 + "****"+ st2);
}//与main方法在同一类中,优先与main方法
public static void main(String[] args) {
int st1 = 223;
System.out.println("main st1 = " + st1);
System.out.println("*****************************");
Student434 st5 = new Student434();
st5.eat();
st5.eatStudent();
System.out.println("*****************************");
Student434.staticTest();//静态调用父类的静态方法
Student434.staticStudent434Test();//静态调用本类的静态方法
System.out.println("*****************************");
}
}
class Person{
int pe = 24;//对于Student434类来说,是父类的成员变量
static{//静态代码块
System.out.println("Person中的静态代码块");
}
{//构造代码块
System.out.println("Person 构造代码块");
}
public static void staticTest(){
System.out.println("Person 中的静态方法,用于测试类文件xxx.class的加载");
}
public Person(){//构造方法
System.out.println("Person 构造方法");
}
public void eat(){
System.out.println("Person.eat");
}
}
class Student434 extends Person{
int pe = 28;//本类成员变量
static{//静态代码块
System.out.println("Student434中的静态代码块");
}
{//构造代码块
System.out.println("Student 构造代码块");
}
public static void staticStudent434Test(){//静态方法
System.out.println("这是从子类中的静态方法调用父类的静态方法");
staticTest();//调用父类的静态方法
}
public Student434(){//无参构造方法
System.out.println("Student构造方法");
}
public void eatStudent(){
int pe = 32;//局部变量
System.out.println("pe = " + pe);//为局部变量
System.out.println("pe = " + this.pe);//本类成员变量
System.out.println("pe = " + super.pe);//父类成员变量
super.eat();//调用父类的eat()方法
}
}
静态代码块、构造代码块、局部代码块、构造方法的执行顺序
最新推荐文章于 2021-09-27 19:43:15 发布