java中的内部类简介


成员内部类:一个类的对象依赖于另一个类:
            与类的属性和方法平级,依赖外部类存在(只能依赖外部类来创建内部类的对象)
            特点:
            内调外:
            1.成员内部类可以直接访问外部类的所有成员,包括静态和非静态以及私有变量和方法。
            持引用:
            2.成员内部类可以拥有外部类的引用,去调用外部类的成员属性和方法,也可以直接调用。如:外部类名.this.                外部类的属性或方法
            3.成员内部类中不能声明类变量和方法 
            如何创建对象:
            4.在main方法中成员内部类对象的创建要通过外部类的对象来创建,如:new 外部类.new 内部类
              在外部类中创建成员内部类的对象可以直接创建。

局部内部类:写在方法体中,只能在方法中使用,每调用一次方法创建一次对象
            1.写在方法中,只在当前方法中有效
            2.如果写在静态方法中,只能调用外部类中静态的静态变量和方法,且不能持有外部类的引用。
            3.如果写在非静态的方法中,那么可以调用所有非私有的外部类成员。
            4.只有在非静态方法中的局部内部类才可以持有外部类的引用,静态方法中定义的内部类不能持有外部类的引用。
                     
   
静态内部类:一个类的对象依赖于另一个类,并且该类可以单独存在。
            == 成员内部类 + static ; 独立存在(可独立创建内部类的对象,或者依赖外部类来创建静态内部类的对象)
          内调外:
            1.静态内部类中不能直接访问外部类的成员变量和方法,静态内部类中不能持有外部类的引用。
              只能通过创建外部类的对象来访问外部类的成员变量和方法,以及私有的成员变量和方法。
            2.静态内部类可以直接访问外部类中的静态变量和方法。
          外调内:  
            3.外部类访问内部类的成员变量或者方法要通过内部类的对象来调用。
            4.外部类可以通过类名调用内部类的所有静态变量或方法。

匿名内部类:在方法参数中使用的,只能使用一次。
           语法:new 父类或者父接口(){ 。。。}

           A。与类有关的匿名内部类
           B。与接口有关的匿名内部类
           1.匿名内部类可以访问外部类中的成员变量和方法
           2.匿名内部类不可以声明静态的变量和方法

-----------------------------------------------------------------------------------------------------------------------------------------------
面试题:

如果成员内部类中成员变量名和外部类成员变量名相同如何访问?
public class Outer {
private int number=100;//外部类成员变量
public class Inner{//内部类
private int number=200;
public void print(){
System.out.println(number);//内部类成员变量
System.out.println(Outer.this.number);//外部类成员变量
}
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智玲君

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

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

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

打赏作者

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

抵扣说明:

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

余额充值