浅谈Java中的内部类

最近在讲Java中的内部类,感觉内部类实际上对于初学者用得不多,那么内部类简单的说,其实就是在一个类的内部定义的类。

10年积累的成都网站建设、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有龙潭免费网站建设让你可以放心的选择与我们合作。

按照定义的情况分为:成员内部类,局部内部类,静态内部类,匿名内部类。

成员内部类,就是定义一个当作类的成员变量的类。

局部内部类,就是在类里面定义一个当作局部变量的类,通常是在方法或代码块中使用。

静态内部类,就是在类中定义一个静态变量,而该静态变量是一个类。

匿名内部类,通常是在创建一个接口对象,该对象是在创建对象的同时实现接口,而该接口的实现只是在此处使用一次,所以不需要定义名字,称为匿名内部类。

请看如下代码:

public interface MyInter{

public void method();

}


public class Outter {

// public static int i; // 普通静态变量

// 静态内部类

public static class Inner3{

}

// public String name; // 普通成员变量

// 成员内部类

public class Inner1{

}


public void test() {

// String n; // 普通局部变量

// 局部内部类

class Inner2{

}

// 匿名内部类,在运行时会生成一个临时的名字,类似:Outter$1.java

MyInter in = new MyInter() {

@Override

public void method() {

}

};

}

}


上面的代码展示了4种不同的内部类的情形。

接下来看看这4种情形的具体用法。


静态内部类:

public class Outter {

public int o1;

public static int os1;

public void om1() {

System.out.println(Inner3.ns3);

System.out.println(new Inner3().n3);

System.out.println("om1");

}

public static void oms1() {

System.out.println("oms1");

}

// public static int i;

// 静态内部类

public static class Inner3{

// 在静态内部类中可以定义基本的成员和方法,以及静态成员和方法

public int n3;

public static int ns3;

public void m3() {

System.out.println("m3");

}

public static void ms3() {

System.out.println(os1);

oms1();

System.out.println("ms3");

}

}

}


静态内部类的使用:

public static void main(String[] args) {

  Outter.Inner3 i3 = new Outter.Inner3();

  i3.n3 = 3;

  Outter.Inner3.ns3 = 4;

  Outter.Inner3.ms3();

  i3.m3();

}

可以看到静态内部类和静态变量使用方式差不多,直接使用类名即可。


成员内部类:

//成员内部类

public class Inner1{

public int n1;

public int o1;

public void m1(int o1) {

o1 = 1; // 局部变量

this.o1 = 2; // 当前属性

Outter.this.o1 = 4; // 外部属性

om1();

System.out.println("m1");

}

}


成员内部类的使用:

public static void main(String[] args) {

// 调用

Outter.Inner1 i1 = new Outter().new Inner1();

i1.n1 = 3;

i1.m1(3);

}

由于是成员,所以需要先创建对象才能使用。


局部内部类和匿名内部类:相当于局部变量,只能在方法里面调用和创建对象等,可以调用外部的变量和方法,外部不能调用它。请看如下方法:

public void test() {

// String n;

// 局部内部类

class Inner2{

public void m2() {

o1 = 3;

}

}

Inner2 i2 = new Inner2();

i2.m2();


// 匿名内部类,在运行时会生成一个临时的名字,类似:Outter$1.java

MyInter in = new MyInter() {

@Override

public void method() {

o1 = 3;

}

};

in.method();

}

至此,内部类简单的使用基本就到这了。


分享标题:浅谈Java中的内部类
文章URL:http://lszwz.com/article/phdeoi.html

其他资讯

售后响应及时

7×24小时客服热线

数据备份

更安全、更高效、更稳定

价格公道精准

项目经理精准报价不弄虚作假

合作无风险

重合同讲信誉,无效全额退款