然而,Java中也存在一种特殊类型的构造函数,即静态构造函数(static constructor)。 静态构造函数的定义 静态构造函数是一个类中的静态方法,用于初始化类的静态成员变量。和普通构造函数不同的是,静态构造函数没有参数,且在类加载时自动调用,只会被执行一次。 publicclassMyClass{static{// 静态构造函数的代码}} 1. ...
System.out.println("myclass constructor"); } } 输出结果 teststaticmyclassstaticpersonstaticperson Test testconstructorpersonMyClassmyclassconstructor 类似地,我们还是来想一下这段代码的具体执行过程。首先加载Test类,因此会执行Test类中的static块。接着执行new MyClass(),而MyClass类还没有被加载,因此需要加...
上述代码中,我们在MainClass类中定义了一个静态内部类StaticClass。然后在main方法中,首先使用new MainClass()来实例化MainClass的对象,再通过该对象使用new StaticClass()来实例化StaticClass的对象。运行程序时,会输出StaticClass Constructor。 3. 使用静态方法实例化静态类对象 另一种方式是通过静态方法来实例化静态...
System.out.println("myclass static"); } publicMyClass() { System.out.println("myclass constructor"); } } 输出结果为: 1 2 3 4 5 6 7 teststatic myclassstatic personstatic person Test test constructor person MyClass myclass constructor 为什么输出结果是这样的?我们来分析下这段代码的执行过程:...
teststaticmyclassstaticpersonstaticpersonTesttestconstructorpersonMyClassmyclassconstructor 类似地,我们还是来想一下这段代码的具体执行过程。首先加载Test类,因此会执行Test类中的static块。接着执行new MyClass(),而MyClass类还没有被加载,因此需要加载MyClass类。在加载MyClass类的时候,发现MyClass类继承自Test类,...
public class Data { private int id; public static Data() {}} 如果您尝试编译此类,则会在 Data 类型的构造函数中收到一条错误消息,作为非法修饰符。仅允许公开,受保护和私有。 静态属于类,构造函数属于对象 我们知道静态方法,静态块或变量属于该类。而构造函数属于该对象,并在使用 new 运算符创建实例时调用...
import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; public class ReflectionExample { public static void main(String[] args) throws Exception { // 获取 Class 对象 Class<?> clazz = Person.class; // 创建对象 Constructor<?> constructor = clazz....
static class Sub extends TestClassLoader { public static int B = A; } public static void main(String[] args) { System.out.println(Sub.B); } } • <clinit>()方法对于类和接口来说,并不是必须的,若类没有静态语句块,也没有对变量赋值操作,则不会生成<clinit>()方法。
packagecc;publicclassSubextendsSuper{publicSub(String s){}publicstaticvoidmain(String[]args){Sub sub=newSub();}}classSuper{String s;publicSuper(String s){this.s=s;}} 上面这段代码会报错: Implicit super constructor Super() is undefined. Must explicitly invoke another constructor。
public class Student String name;int id;public Student(String inputName, int inputId)name = inputName;id = inputId;这样newStudent("张三",1001)就能直接生成完整信息的学生对象,避免属性值空缺导致的空指针问题。constructor还能调用其他constructor。用this()语句可以调用本类其他构造方法,比如先调用无参构造...