首页编程java编程java内部类什么时候加载(java中静态内部类什么时候加载)

java内部类什么时候加载(java中静态内部类什么时候加载)

编程之家 2023-10-14 105次浏览

本篇文章给大家谈谈java内部类什么时候加载,以及java中静态内部类什么时候加载对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

java内部类什么时候加载(java中静态内部类什么时候加载)

java中静态内部类什么时候加载

只有在加载内部类的时候才初始化

看懂以下的代码,那么对于类的加载,基本上就没问题了,最后类的加载过程的解释

public class Test6{

java内部类什么时候加载(java中静态内部类什么时候加载)

public static void main(String[] args){

new B();

new A.C();

java内部类什么时候加载(java中静态内部类什么时候加载)

}

}

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内部类使用,什么时候该使用内部类及使

java中的内部类和接口加在一起,可以的解决常被C++程序员抱怨java中存在的一个问题没有多继承。

每个内部类都能独立的继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。

1.内部类继承

因为内部类的构造器必须连接到指向其外围类对象的引用,所以在继承内部类的时候使用特殊语法。问题在于,指向外围类对象的引用必须被初始化,而在导出类中不存在可连接的默认对象。所以必须要用特殊语法来明确说清楚他们之间的关联。

[java]view plaincopy

classWithInner{

classInner{}

}

publicclassInheritInnerextendsWithInner.Inner{

InheritInner(WithInnerwi){

wi.super();

}

}

2内部类覆盖

当继承一个外围类的时候,内部类不会发生什么变化。当明确的继承一个内部类时会发生变化。

[java]view plaincopy

publicclassEgg{

privateYolky;

protectedclassYolk{

publicYolk(){

System.out.println("Egg.Yolk");

}

}

publicEgg(){

System.out.println("NewEgg");

y=newYolk();

}

}

[java]view plaincopy

publicclassBigEggextendsEgg{

publicclassYolk{

publicYolk(){

System.out.println("BigEgg.yolk()");

}

}

publicstaticvoidmain(String[]args){

newBigEgg();

}

}

输出:

New Egg

Egg.Yolk

java中内部类该何时用,怎么用

1.在一个类内部还存在另一个类,则后者为内部类;

2.内部类可声明成public或private,当内部类声明成public或private时,对其访问的限制与成员变量和成员方法完全相同;

3.定义格式:

标识符 class外部类的名称{

//外部类的成员

标识符 class内部类的名称{

//内部类的成员

}

}

示例:

class Outer{//定义外部类

private String info="hello world";//定义外部类的私有属性

class Inner{//定义内部类

public void print(){//定义内部类的方法

System.out.println(info);//直接访问外部类的私有属性

}

};

public void fun(){//定义外部类的方法

new Inner().print();//通过内部类的实例化对象调用方法

}

};

public class InnerClassDemo01{

public static void main(String args[]){

new Outer().fun();//调用外部类的fun()方法

}

};

这位童鞋可以试着不用内部类写个程序完成以上功能,你会发现代码明显比之前的更加麻烦和复杂,所以内部类的唯一好处是方便的访问外部类中的私有属性,从而减少代码。

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内部类什么时候加载和java中静态内部类什么时候加载的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

java.exe是什么进程?javaserver64.exe是什么进程 java培训班能学到什么,Java培训班一般都教什么内容