内部类

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

内部类的分类:

   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(){
  @Override
public void test1() {
System.out.println("我是test1");
}
   }.test1();
   
   
    new A() {

@Override
public void test2() {
System.out.println("我是test2");

}
}.test2();
}
   
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轩渃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值