主动引用和被动引用
主动引用和被动引用
1.new 对象,反射获取类对象 都属于主动引用
主动引用
1.main()方法是程序的入口,函数从这里先开始
2.你主动new 一个对象肯定初始化啊!
3.调用非静态页会初始化,总共就出了final常量,其他不管调用一个类的啥变量,方法都会实例化这个变量。除了final常量,一切方法都依赖于这个类。
4.反射要获取class对象,你不初始化,怎么会有class?
5.因为子类必须要知道父类写什么方法了,所以必须要瞅瞅父类的家产(方法和变量)
package Reflection;
public class Tets04 {
static {
System.out.println ("main类被引用");
}
public static void main(String[] args) throws ClassNotFoundException {
// Son son = new Son ();//初始化一个类,会先初始化他的父类
// Class. forName ("Reflection.Son");
//不会产生类的引用
System.out.println (Son.b);//子类调用父类的变量,子类不会被加载
Son[] arr = new Son[10];//只是一片数组,并不会加载类
System.out.println (Son.M);//常量和静态在链接过程中已经调入常量池之中了
}
}
class Father{
static int b = 2;
static {
System.out.println ("父类被加载");
}
}
class Son extends Father{
static {
System.out.println ("子类被加载");
m = 300;
}
static int m = 100;
static final int M = 1;
}