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.
反编译之前的静态方法调用非静态字段代码: