内部类基础知识点

什么叫内部类?

定义在类内部的类就叫做内部类。

 

内部类分类?

内部类按定义位置分类:

  • 成员内部类:和属性方法定义在一起的叫成员内部类。
  • 局部内部类:定义在方法里面的内部类叫局部内部类(例如匿名类)。

内部类按修饰符分类?

  • 静态类:被static修饰的内部类叫静态内部类
  • 非静态类:不使用static修饰的内部类叫非静态内部类

 

静态内部类和非静态内部类的区别:

访问外部类属性和方法的方式不同:静态内部类只能直接访问外部类中静态的方法和属性,访问非静态方法和属性时必须创建外部类的对象。

静态内部类和非静态内部类中可以定义的东西不同:非静态内部类中不能定义静态成分,静态内部类中什么都可以定义

 

下图为在静态内部类和非静态内部类中调用外部类方法属性的区别:

由图可知:在非静态内部类中可以直接调用外部类的属性和方法(包括静态方法),但是在静态内部类中需要创建外部类对象才能调用,但是调用外部类静态方法时可以直接通过方法名调用。

如何创建这个非静态内部类对象?

外部类名.内部类名

 

内部类和外部类的区别:

访问方式不同

内部类可以直接访问外部类中的成员

外部类必须创建内部类对象之后才能访问内部类

联系:

不论是外部类和内部类都会生成.class文件。

 

 

 

 

 

 

非静态内部类可以直接访问外部类的所有方法和属性(包括私有)

 

内部类可以直接访问外部类的属性

外部类必须创建内部类的对象才能访问内部类属性(两种情况)

第一种情况:在外部类里面访问内部类可以使用   

            Inner inner = new Inner();

            Outer.Inner oi=new Outer.Inner();

第二种情况:在别的类中访问其他包的内部类,必须使用第二种创建方式,指定主从关系。(内部类必须是public修饰的)

 

非静态类创建对象,必须要创建一个外部类对象

Outer.Inner  oi  =new  Outer().new Inner();

静态类创建对象,可以直接使用类名.静态内部类方法

Outer.Inner  oi2=new Outer.Inner();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值