00014.02 静态内部类和非静态内部类

一、 静态内部类

1、特点
(1)静态内部类中可以出现原本类中能改定义的所有成员
我们回顾一下有哪些成员
属性,可以有静态属性和非静态属性
方法,可以有静态方法和非静态方法
构造器,可以有有参和无参构造器
代码块:可以有静态代码块和非静态代码块
内部类:有静态内部类和非静态内部类,并且允许在内部类里面再写内部类,但是我们不讨论内部类的内部类,这里跳过,没必要搞复杂
(2)静态内部类中不能使用外部类的非静态的成员
在这里插入图片描述
(3)在外部类中,使用静态内部类,和使用其他的类一样的原则,
如果使用静态内部类的静态成员,直接“静态内部类名.”
如果使用静态内部类的非静态成员,直接“静态内部类对象名.”

(4)在外部类的外面,使用静态内部类
如果使用静态内部类的静态成员,直接“类名.”
使用外部类名.静态内部类名.静态方法
使用import 包.外部类名.静态内部类名; 在代码中使用 “静态内部类名.”
在这里插入图片描述

	如果使用静态内部类的非静态成员,“静态内部类对象名.”

(5)静态内部类不会随着外部类的初始化一起初始化,而是要在使用到这个静态内部类是才会初始化
看下面这段代码,并没有调用出内部类
在这里插入图片描述

二、非静态内部类

非静态内部类 是有一些特殊的
在这里插入图片描述
1、特点
(1)在非静态内部类中,不能出现任何static有关的声明
(2)在非静态内部类中可以随意访问外部类的所有成员,包括静态的和非静态的
(3)在外部类的静态成员中,不能使用非静态的成员内部类
在这里插入图片描述
在这里插入图片描述
如上代码 违反了 “静态方法不能访问非静态的成员” 这个原则
(4)在外部类的外面使用
第一步:先创建外部类的对象
第二步:要么通过外部类对象去创建内部类的对象
要么通过外部类的对象去获取内部类的对象
在这里插入图片描述

在这里插入图片描述
new一个 非静态成员 需要new 一个对象

在这里插入图片描述
但是实际开发中,一般会去避免程序员写这种代码,因为有点反人类
那么怎么避免呢?

在这里插入图片描述
在这里插入图片描述
后面我们讲的迭代器那些都是这样,通过方法创建对象
在这里插入图片描述

总结

(1)同级的来说静态的不能直接使用非静态的
(2)访问一个类的静态成员,用“类名.”即可,
访问一个类的非静态成员,用“对象名.”即可,
(3)一个类需要初始化,得用到这个类


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值