小白的学习笔记之内部类(一)

内部类

一、内部类访问外部类的成员

类的组成:方法,构造器,成员变量,初始化块(代码块),内部类(也看成是类中一员)

1、外部类能够访问内部类的私有成员变量

2、内部类也可以访问外部类的私有方法、私有成员变量

变量访问的顺序

1、局部变量优先,本类中的成员变量,外部类的成员变量;

2、内部类中的方法要访问内部类的成员变量,用 this.+成员变量名 来访问;

3、内部类中的方法要访问外问类的成员变量,用 外部类的类名.+this.+

成员变量名 来访问;

4、外部类不能直接访问内部类成员变量名,除非外部类new一个内部类对象去访问内部类的成员变量。

为什么内部类可以直接使用外部类的成员变量(前提是内部类中没有同名成员变量)?

1、成员变量是跟着对象走的,有对象才有成员变量;

2、能调用内部类的普通方法,一定有一个有内部类对象存在;

3、如果有一个内部类对象存在,则一定有个外部类对象存在;

以上这些适用于普通内部类和局部内部类,不适和于静态内部类。

综上所述,可以表明,有一个内部类对象存在,则一定会有一个外部类对象存在,所以,在内部类普通方法中,能够直接访问外部类的成员变量。(内部类对象隐式地保存了指向创建他的外部类对象的箭头/引用/指针)

但相反,有外部类对象存在,不代表有内部类对象存在,所以外部类不能直接使用内部类的成员变量。

静态规则:

1、不允许在外部类的静态方法中使用内部类;

2、内部类不要沾染上和“静态static”关键字有关的内容,否则就会报错。

二、内部类的种类

1、普通内部类:类中定义的另一个类。外部类访问普通内部类看起来和访问一个普通类区别并不太大。

2、局部内部类:外部方法中定义一个内部类。作用域局限在定义他的方法中,无法在外部类的其他方法中使用。感觉用处相对比较小。在任何一个作用域内都可以嵌入一个局部内部类。例如在if语句啥的内部可以嵌入内部类。

3、静态内部类:用static修饰的内部类就是静态内部类。

静态,跟着类走的,跟对象没有关系; 一旦定义了一个静态内部类,那么该类就属于外部类的组成部份了(跟外部类对象没有什么关系)

基本上,什么成员都可以往静态内部类里面放。

静态内部类和外部类之间访问数据的时候,把握一些原则:

1、内部类的静态方法中不要去访问那些非静态的成员变量。

2、静态内部类中的普通方法也不要去访问外部类的普通方法,只能访问外部类的静态方法。

静态内部类和外部类之间的一些调用关系:

1、外部类借助静态内部类的类名;

2、外部类借助静态内部类对像;

三、接口的内部类

在接口中,是可以在一个内部类中定义一个静态成员变量,为什么?

因为在接口中,会自动为内部类使用static修饰,也就是说,接口中出现的内部类,都会是静态内部类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值