JAVA课堂作业(2019.10.14)

一、

 

 

 (1)代码

package class20191014;
import java.util.Scanner;
public class ClassHomework {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(true) {
            System.out.println("请选择您要执行的功能:");
            System.out.println("1.创建一个类的对象");
            System.out.println("2.查询类的对象的个数");
            int choose=in.nextInt();
            if(choose==1) {
                new A();
            }
            if(choose==2) {
                System.out.println("您共创建了"+A.sum+"个类的对象!");
            }
        }
    }
}

class A{
    static int sum=0;
    A(){
        sum++;
    }
}

(2)运行结果

 

 二、动手动脑

1.

 

 答:该类的构造方法程序员已经给出的其固定的格式,该类继承自其父类的构造方法被覆盖了,所以在实例化该类的变量时,应该像该构造方法中传入一个int类型的参数。

2.

 

 结果为:100   300

该结果说明了类的对象生成时,JAVA字段初始化是从前到后的,后边的字段会覆盖掉前边的字段,如声明field为其赋值的100会覆盖掉之前的200,新实例化一个新的对象时,构造方法在声明语句后面,300覆盖掉了100.

3.

 

 总结:静态初始化块在该类被声明时就跟着类运行了,且只会运行依次,而类中的普通初始化块则是在类实例化时开始运行,而类的实例化时会先运行其父类,如果其父类还有父类则运行其父类的父类,依次类推。

4.

 

 方法:可以向静态方法中传入一个该类的对象的引用,然后再该静态方法中调用该引用的非静态方法或字段。

 

 5.

 

 反编译之前的静态方法调用非静态字段代码:

 

posted @ 2019-10-17 20:59  Nevesettle  阅读(138)  评论(0编辑  收藏  举报