欢迎光临
我们一直在努力

java内部类的总结-JSP教程,Java技巧及代码

建站超值云服务器,限时71元/月

内部类总结:

1内部类的嵌套可以理解成类的链关系,在构造一个内部类(非static)的实例的时候,会将直接外层类的实例

作为参数传进构造函数,而外层类的实例也是用其外层类的实例构造,所以是一种链状关系,内部的类可以使用所有

外层的类的实例,而外层的类不能使用内层的类, 应用a.this(最外层类实例) ,a.b.c.this(链中某个外层的实例)。

class theouter{

class kk {

class gg {

int tt = 100;

}

}

class aa {

class bb {

int jj = 10;

class cc {

{ int ff = theouter.aa.bb.this.jj;

// 无法直接访问到gg不在链关系内

system.out.println(ff);

}

}

}

}

}

2 创建一个内部类 new aa().new bb().new()cc 实际上是调用 外层类实例.new 本层构造函数()

如果内部类是static的不需要外层类的实例 多个static嵌套的内部类的实例 aa.bb.cc test = new aa.bb.cc();

3

class a0 {

class b0 {

}

}

class vvv{

class ff extends a0.b0 {// ff这里不是内部类也行

ff(a0 kk){

kk.super();

}

}

}

继承自内部类要调用父类的外层类的super()

4

class dd {

void print(){

system.out.println("dd.println is there");

}

class kk {

kk(int i){}

class cc {

void pp() {

system.out.println("****");

}

void ddpp() {

dd.this.print();

}

}

}

}

class aa {

public static void main (string agrs[]) {

dd.kk.cc test = new dd().new kk(10).new cc();

test.ddpp();

}

}

在类内部可以是使用外层类,但是如果生成一个实例的句柄就没有提供访问上层类的功能。

5 this 是指本类的实例

6 缺省的new

class cc {

{

new test();

}

class kk {

{

system.out.println("there kk");

}

}

class test {

{

new kk();

}

class kk {

{

system.out.println("there test_kk");

}

}

}

}

可以直接使用new,new的范围可以是 之际外层.this.new 和this.new 但是如果内层与外层出现同名类以内部优先

7

//当有链关系的时候要注意类不要重名

class vv {

class bb {} //!

class kk {

//class vv{} 这样就会出错

class bb {} //!这样就不会出错

}

}

8

class a0 {

class b0 {

}

}

class vvv{

class ff extends a0.b0 {// 不是内部类也行

ff(a0 kk){

kk.super();

}

}

}

继承自内部类要调用父类的外层类的super()

9 匿名内部类

interface oo {

//oo(int g) {}

int k = 10;

void pt();

}

class pp {

pp(int g) {

}

int get() {

return 100;

}

}

class me {

/*

interface oo {

void pt();

}

*/

class kk{

oo testmed() {

final int i = 10;

int g = 100;

return new oo() {

int kk;

{

// 使用外面的东西要声名成final

// 继承接口内部优先

// 匿名内部类没有构造函数,只能使用块,初始化

kk = i + k ;

}

public void pt() {

system.out.println(kk);

}

};

}

pp testmed0() {

return new pp(10){ // 继承自类

public int get() {

return super.get() * 10;

}

};

}

}

}

匿名内部类可以继承自接口也可以继承自类,继承自类的构造函数中 可以有参数。

10

class bf {

interface kk {}

class aa {

// 接口能嵌套在接口中(不受限制),或者嵌套在顶层,下面就不行

//interface gg {}

}

}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » java内部类的总结-JSP教程,Java技巧及代码
分享到: 更多 (0)