内部类
定义在类或者对象内部的类称为内部类。
在类的内部有:属性,方法,类。
1. 实例化内部类的对象
- val 外部类的对象 = new 外部类()
- val 内部类的对象 = new 外部类的对象.内部类
基本案例
//内部类
//1. 实例化内部类的对象
// val 外部类的对象 = new 外部类()
// val 内部类的对象 = new 外部类的对象.内部类
object class20 {
//外部类
class Class1() {
//写在C1内部的类
class Class2() {
def test():Unit={
println("test....")
}
}
}
def main(args: Array[String]): Unit = {
val c1=new Class1()
val c2=new c1.Class2()
c2.test()
}
}
2.作用
- 整理代码,避免重名
- 访问,操作 外部类的私有成员
基本案例
//内部类
//1. 实例化内部类的对象
// val 外部类的对象 = new 外部类()
// val 内部类的对象 = new 外部类的对象.内部类
/*
*2. 作用
* (1) 整理代码,避免重名
* (2) 访问,操作 外部类的私有成员
*/
object class21 {
//外部类
class Car() {
//私有属性,在类的外部不能被访问
private var speed:Int=0
def getSpeed():Unit={
println(s"当前的速度是${speed}")
}
class Engin() {
def accSpeed(s:Int=10):Unit={
speed += s
}
def subSpeed(s:Int=10):Unit={
speed -= s
}
}
}
def main(args: Array[String]): Unit = {
val car=new Car()
val engin=new car.Engin //使用内部类
engin.accSpeed(20)
engin.subSpeed(10)
car.getSpeed()
}
}
3.内部对象
内部对象,就是定义在class内部的object。
基本案例
/*
*内部对象:在class内部,定义object对象
* 1. new Class的实例
* 2. 实例,对象
*
*/
object class22 {
class Class1() {
object obj {
var age:Int=10
def say():Unit={
println(s"hello,${age}")
}
}
}
def main(args: Array[String]): Unit = {
val c1=new Class1()
c1.obj.say()
}
}