Java内部类定义与调用

把一个类放在另一个类内部定义,这个定义在其他类内部的类就被称为内部类,包含外部类的类被称为外部类。内部类主要有以下作用:

1内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中其他类访问。

2内部类可以直接访问外部类的私有数据,因为内部类被当成外部类的成员。

3匿名内部类适合用于创建那些仅需要一次使用的类。

内部类比外部类多三个使用的修饰符:private、protected、static,非静态内部类不能拥有静态成员。

1非静态内部类

         定义内部类,只需要将一个类放在另一个类内部定义即可,此处的类内部包括类中任何地方。格式:public class OuterClass{//内部类定义}

调用:在外部类里调用非静态内部类跟使用普通类没有太大区别,eg:

      var c1=new CowOne();//内部类  

      c1.info()//内部类函数

注:若外部类、内部类成员变量与内部类方法里的局部变量同名,调用它们的方法如下:

(1)在非静态内部类的方法中面调用外部类变量方法:OuterclassName. this. varName;

(2)调用内部类的实例变量方法:this. varName;

(3)方法里变量跟普通变量一样使用。varName;

2静态内部类

使用static修饰的内部类,则这个内部类就属于外部类本身,不属于外部类的某个对象。静态内部类里面可以包含静态成员,也可以包括非静态成员。静态内部类不能访问外部类的实例变量,只能访问外部类成员。定义格式:public class OuterClass{

        static class staticInnerClass{

//静态内部类里面定义} 

}

调用:使用静态内部类的类名作为调用者(SStaticClass.varName)或者使用静态内部类对象调用(new StaticClass().varName)。

在外部类

以外调用静态内部类和非静态内部类方法:OuterClass. InnerClass varName。

eg:OutClass. InnerClass in =new Out().new InnerClass();//在外部类以外调用内部类。

3局部内部类

把一个内部类放在方法里定义,则这个内部类就是局部内部类,局部内部类在方法内才有效,不能在外部类方法以外使用,所以局部内部类不能使用访问控制符和static修饰符修饰。实际开发中很少使用。

4匿名内部类

匿名内部类适合于创建那种只需一次使用的类,创建匿名内部类时会立即创建一个该类的实例,这个类定义立即消失,匿名内部类不能重复使用。格式:new 实现接口() | 父类构造器(实参列表){//匿名内部类的类体部分}

注意:匿名内部类不能是抽象类,所以匿名内部类必须实现它的抽象父类或者接口里包含的所有抽象方法。匿名内部类不能定义构造器。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值