《一》内部类的定义
定义在类或者对象内部的类称为内部类。
在类的内部有:属性,方法,类。
《二》内部类的基本使用
定义格式: class 类 { class 内部类 } 使用格式: new 类的实例.内部类()
package level02
//内部类
//1.实例化内部类的对象
// val 外部类的对象 =new 外部类();
// val 内部类的对象 =new 外部类的对象.内部类
object class15 {
//外部类
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()
}
}
《三》内部类的使用案例
package level02
//内部类
//1.实例化内部类的对象
// val 外部类的对象 =new 外部类();
// val 内部类的对象 =new 外部类的对象.内部类
/*
2.作用
(1)整理代码
(2)访问,操作 外部类的私有成员
*/
object class16 {
//外部类
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(9)
car.getSpeed()
}
}
《四》内部对象
内部对象,就是定义在class内部的object。
定义格式: class 类名 { object 对象名{ 属性;方法() }}
使用格式:类名.对象名.属性名; 类名.对象名.方法名()
package level02
/*
内部对象:在class 的内部,定义object对象
*/
object class18 {
trait A {
var name:String;
def sayA():Unit={
println("sayA")
}
}
trait B {
var age:Int
}
class Class1 extends A {
var name: String = "Class1"
var age:Int=4
}
def main(args: Array[String]): Unit = {
val class1 = new Class1()
class1.sayA()
println(class1.name)
println(class1.age)
}
}