一、理论
(一)初次创建对象时
父类静态变量(静态属性)--->父类静态代码块--->子类静态变量--->子类静态代码块--->父类实例变量(实例属性)--->父类动态代码块--->父类构造方法--->子类实例变量--->子类动态代码块--->子类构造方法
(二)非初次创建对象时
父类实例变量(实例属性)--->父类动态代码块--->父类构造方法--->子类实例变量--->子类动态代码块--->子类构造方法
二、演示代码设计
(一)概要设计
1.设计一个Student类,里边包含静态属性、静态方法、实例变量、实例方法和构造方法。
2.设计一个Dog-Student类继承Student类,里边同样包含静态属性、静态方法、实例变量、实例方法和构造方法。
3.设计一个Test类,用于创建Dog_Student类的对象,进行相关验证。
(二)详细设计
略(参考代码)
三、代码
(一)Student
public class Student{
static String school = "Animals' Union University"; // static property(静态属性)
static int school_history = 500000; //static property
int age = 1; //property(实例属性)
{
System.out.println("Student类动态代码块"); //动态代码块
}
static{
System.out.println("Student类静态代码块1"); //静态代码块
}
public Student() {
System.out.println("Student born!!!"); //构造方法
}
public static void method1() {
System.out.println("Student类静态方法method1"); //静态方法
}
public void method2(){
System.out.println("Student类动态方法method2"); //实例方法
}
public void setAge(){ //实例方法
age += 1;
System.out.println("学生长大一岁");
}
public static void setSchool_history(){ //静态方法
school_history += 1;
System.out.println("庆祝动物联合大学又长一岁");
}
static{
System.out.println("Student类静态代码块2"); //静态代码块
}
}
(二)Dog-Student
public class Dog_Student extends Student{
static int dog_stu_count = 0;
int eat_fish_nums = 0;
static {
System.out.println("Dog Student 的静态代码块");
}
{
System.out.println("Dog Student 的动态代码块");
}
public Dog_Student() {
System.out.println("Welcome to Animals' Union University.You are a one-year-old dog student.");
dog_stu_count += 1;
System.out.println("Dog student's number is:" + dog_stu_count);
}
public static void ruler(){
System.out.println("Dog student will learn from cat. Because with this method, it can avoid human exploitation.");
}
public void learn_shout(){
System.out.println("miao miao miao");
}
public void eat_fish(){
System.out.println("Dog student eat fish. Because it is learning from cat now.");
}
}
(三)Test
public class Test {
public static void main(String[] args) {
Dog_Student dog_student = new Dog_Student(); // 创建第一个对象 Create first Dog Student
dog_student.method1(); //调用父类的静态方法(虽然用对象可以调用静态方法,但用类更合乎规范)
dog_student.method2(); //调用父类的实例方法
dog_student.ruler();
dog_student.learn_shout();
dog_student.eat_fish();
Dog_Student dog2 = new Dog_Student(); //创建第二个对象
Dog_Student dog3 = new Dog_Student(); //创建第三个对象
}
}
四、代码使用方法
在语句[Dog_Student dog_student = new Dog_Student(); ]前设置断点,debug方式执行代码。
通过force step into按钮进入方法中,可以观察代码执行流程。
(备注:各位码友关注Java语法即可,演示代码中的具体内容不用当真)