内部类的理解

内部类的理解

   内部类的定义:

   在一个类A中嵌套一个类B,那么类B就是内部类(嵌套类),

 而类A为外部类(宿主类)。内部类可以定义多种访问权限

         作用:实现了更好的封装。不允许外界访问,同一个包中也不行。

   分类:成员内部类、局部内部类(放在函数中)、

       静态内部类(static标记)、匿名内部类

   

    成员内部类可以访问外部类的一切(包含私有属性和方法),而外部类不能访问   内部类的私有属性和方法。

    成员内部类不可以直接自己创建对象实例化,可以通过外部类的对象来创建对象    访问内部类方法和变量。outner.new Inner().display();

   内部类产生的.class文件名不是内部类的名称,而是在内部类的前面会添加

          外部类的名称+$. 如:Outner&Inner.class

public class Outner {
private int age = 20;
private String name = "outner";
public class Inner{
private String  address = "inner";
        Private int age = 18;
public void display(){     //内部类可以直接访问外部类的私有属性
System.out.println("age="+age+"name="+name+"address="+address);
            //结果为 age = 18 ,name= outner , address = inner
}
}
public void display(){       // 只能通过内部类对象来访问内部类属性
System.out.println("age="+age+"name="+name+"address="+new Inner().address);
          //结果为 age = 20 ,name= outner , address = inner
 
}
}
Outner outner = new Outner();
outner.display();
outner.new Inner().display();//内部类必须通过外部类来创建对象和实例化
 
如果内部类中要使用重写之后的外部类的属性
        Outner.this.age
System.out.println("age="+Outner.this.age+"name="+name+"address="+address);
//结果为 age = 20 ,name= outner , address = inner
 


    局部内部类:局部内部类只能访问所在函数的final属性


    静态内部类:可以访问外部类的静态成员和静态方法,不能访问外部类的实例成员和实例方法。

    静态内部类的使用

     创建静态内部类时,不需要先创建外部类的实例,直接使用

       new Outner.Inner() 语法就可以创建一个实例。

    如果静态内部类中有静态成员和静态方法,那么调用方式:

                  Outner.Inner.getValue()。

匿名内部类

   匿名内部类必须继承一个父类或者是实现一个接口。语法格式:

      new 父类或者接口() {

       执行代码

       };

     每次创建匿名内部类的对象时,必须先定义匿名内部类,然后

      马上使用new创建对象。如果希望再次创建这个匿名内部类的对象,必须重定定义匿名内部类,即每个匿名内部类的定义只能使用一次(和匿名对象使用一样)



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值