首页 > 学院 > 开发设计 > 正文

内部类

2019-11-06 06:12:00
字体:
来源:转载
供稿:网友

内部类的概念:一个类定义在另外一个类的内部,该类叫做内部类。

内部类的分类:

   1.成员内部类

    2.局部内部类

    3.静态内部类.

    4.匿名内部类

成员内部类:

作为外部类的一个实例成员

外部类.内部类  对象名=外部类对象.new  内部类();

一个类对应一个字节码文件,一个内部类会产生一个字节码文件

内部类可以使用修饰符,成员内部类只能定义实例成员。

以下是例子:

package inner;public class Outer {int a=2;void test1(){}class inner{int r=9;int b=3;void test3(){}void test2(){}}}

package inner;public class TestInner {  public static void main(String[] args) {  Outer out = new Outer();  out.a=3;  out.test1();    Outer.inner inner = out.new inner();  inner.b=3;     }} 

局部内部类:定义在方法或代码块中的类

例子如下:

package inner;public class Out2 {int a;public void test1() {// TODO Auto-generated method stub}public void s(){class inner2{int a,b;public void test1(){}}inner2 in2 = new inner2();}}

静态内部类:定义在类成员位置的并用static修饰的类

例子如下:

package inner;public  class Out3 {static int a=7;public static class inner3{int b=9;//static int a =11;public static  void function() {// TODO Auto-generated method stub                  System.out.PRintln("lllll");}    void fun(){    }}package inner;public class Testinner3 {public static void main(String[] args) {Out3 out = new Out3();out.a=9;    Out3.inner3.function();  }}

匿名内部类:

1.继承一个父类(一般为抽象类),或实现一个接口

2.没有名字

3.定义时立即使用,有且仅能使用一次

测试代码如下:

package inner;public interface I {  void test1();}

package inner;public abstract class A {  public abstract void test2();}

package inner;public class Test1 {public static void main(String[] args) {   new I(){  @Overridepublic void test1() {System.out.println("我是test1");}   }.test1();          new A() {@Overridepublic void test2() {System.out.println("我是test2");}}.test2();}   }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表