在Scala的世界里,内部类是“类中类”的神奇存在——它像嵌套的俄罗斯方块,让复杂逻辑在“类的容器”里井然有序。
想象一下:你正在设计一辆“智能汽车”系统,需要把“引擎(Engine)”“轮胎(Tire)”“导航(Navigation)”等模块封装到“汽车(Car)”类中。如果每个模块都独立成类,代码会像散落的积木,拼接时容易“掉零件”;而内部类就像给这些模块套上“类的保护壳”,让它们只在“汽车”这个大容器里“私有化”协作,既保证了模块间的紧密耦合,又避免了外部代码的“越界访问”。
这种“类中类”的设计,不仅让代码结构更清晰,还能通过访问控制(如private修饰)实现“模块间的安全隔离”,是Scala中“封装”思想的生动实践。
接下来,我们就从“内部类的定义、访问规则、应用场景”等维度,拆解Scala内部类的“魔法密码”,带你一步步掌握这个让代码“井然有序”的秘密武器~
(一)格式:
在一个类的里面,在写一个类
eg1:
package level02
/**
* 内部类
*
*/
object class07 {
// 外部类
class Car() {
var wheel: Int = 3
def run(): Unit = {
println("run....")
}
// 内部类
class Engine() {
val power: Int = 12
}
}
def main(args: Array[String]): Unit = {
val c1 = new Car()
var eng = new c1.Engine() // 创建外部类Car的内部类Engine实例
println(eng.power) // 访问内部类的val属性power
}
}
(二).作用:
组织逻辑更加严谨;避免命名的冲突
eg2:
package level02
/**
* 内部类
* 1.格式:在一个类的里面,在写一个类
* 2.作用:组织逻辑更加严谨;避免命名的冲突
*
*/
object class07 {
// 外部类
class Car {
var wheel: Int = 3
// 私有成员
private var speed: Int = 0
def run(): Unit = {
println(s"速度为:$speed... run...")
}
// 内部类
class Engine {
def acc(Increment: Int): Unit = {
speed += Increment
}
}
class AutoPark() {}
}
def main(args: Array[String]): Unit = {
val c1 = new Car()
// c1.speed // 私有成员不能访问
val en = new c1.Engine()
en.acc(10)
c1.run()
}
}
- 完结撒花 !!!!!!!!!!
- 制作不易 希望·一键三连 在此感谢关注的粉丝宝宝
- 新来的宝宝可以关注下主播哟!!!!!