「java内部类加载」java 静态内部类加载
今天给各位分享java内部类加载的知识,其中也会对java 静态内部类加载进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
java 中静态内部类字段什么时候初始化?是在外部类加载的时候就初始化吗?
首先分析下名字:静态内部类
静态是static。静态的方法或者参数是随着类的加载而产生的(感觉应该是JVM启动时static属性就加载了。)。这就是为什么不用实例化类,就可以调用它的原因。
内部类:用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。其他类不会调用。所以没必要另写一个类。外部类可以调用内部类。而内部类不能调用外部类的方法。
所以我觉得
静态内部类中的属性,方法,是在外部类加载的时候初始化的。
希望对您有帮助。如果有问题请自行
谷歌
度娘.
java中静态内部类什么时候加载
只有在加载内部类的时候才初始化
看懂以下的代码,那么对于类的加载,基本上就没问题了,最后类的加载过程的解释
public class Test6 {
public static void main(String[] args){
new B();
new A.C();
}
}
class A{
private P p1 = new P("A--p1");
static P p3 = new P("A--p3");
public A(){
System.out.println("A()");
}
private P p2 =new P("A--p2");
static{
new P("A--static");
}
{new P("A{...}");}
public static class C {
private P p1 = new P("C--p1");
static P p3 = new P("C--p3");
public C(){
System.out.println("C()");
}
private P p2 =new P("C--p2");
static{
new P("C--static");
}
{new P("C{...}");}
}
}
class B extends A {
private P p1 = new P("B --p1");
static P p3 = new P("B -- p3");
public B() {
System.out.println("B()");
}
public P p2 = new P("B -- p2");
static {
new P("B -- static");
}
{new P("B{...}");}
}
class P {
public P(String s) {
System.out.println(s);
}
}
/*
有父类的情况
1. 加载父类
1.1 为静态属性分配存储空间并赋初始值
1.2 执行静态初始化块和静态初始化语句(从上至下)
2. 加载子类
2.1 为静态属性分配存储空间
2.2 执行静态初始化块和静态初始化语句(从上至下)
3. 加载父类构造器
3.1 为实例属性分配存数空间并赋初始值
3.2 执行实例初始化块和实例初始化语句
3.3 执行构造器内容
4. 加载子类构造器
4.1 为实例属性分配存数空间并赋初始值
4.2 执行实例初始化块和实例初始化语句
4.3 执行构造器内容
5 回到main()
内部类的加载过程也一样
java中的静态内部类的特点是什么?
需要了解2个概念:内部类和静态修饰符static1)首先,用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放这个类。2)静态都是用来修饰类的内部成员的。比如静态方法,静态成员变量,静态常量。
它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。这样静态内部类就可以理解了,因为这个类没有必要单独存放一个文件,它一般来说只被所在外部类使用。
并且它可以直接被用 外部类名+内部类名 获得。以下举例说明怎么使用:Student类有个叫School的内部类(非静态)Student stu = new Student();stu.School sch = new stu.School();sch就是School的一个对象。假如School是内部静态类:Student.School sch = new Student.School()。
关于java内部类加载和java 静态内部类加载的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-25,除非注明,否则均为
原创文章,转载请注明出处。