一.嵌套类
- 嵌套类是什么
嵌套类就是一个类嵌套在另一个类里面
- 嵌套类的写法
class QianTaoOuter {
var className: String = "QianTaoOuter"
var classNameLength: Int = 4
class QianTaoInner {
var className: String = "QianTaoInner"
var classNameLength: Int = 5
}
}
3.嵌套类实例化 **外部类.内部类()**
var qianTaoInner = QianTaoOuter.QianTaoInner()
4.嵌套类中 内部的类不能获取外部类的属性和方法
二.内部类
- 内部类是什么
内部类是一种特殊的嵌套类,被嵌套到里面的类使用
inner
关键字修饰,内部类可以拥有对外部类的引用。但是外部类没有内部类的引用
2.内部类中的
this
- 仅仅是
this
,分别表示获取外部类或者内部类自己的引用 this@外部类
表示获取外部类的属性和方法的引用this@内部类
表示获取内部类的属性和方法的引用,在外部类中不能使用this@内部类
获取内部类的属性和方法
class QianTaoOuter {
var className: String = "QianTaoOuter"
var classNameLength: Int = 4
inner class QianTaoInner {
var innerClassName: String = "QianTaoInner"
var innerClassNameLength: Int = 5
}
}
4.属性类的使用 **外部类().内部类()**
var qianTaoInner = QianTaoOuter().QianTaoInner()
三.内部类的嵌套关系和子类父类继承关系的比较
- 关键字不同:
继承关系的类是分开的,通过:
继承,内部类的关键字是inner
- 是否可以重写
继承关系中子类可以重写父类使用open
关键字标识的类,但是内部类没有重写的概念 - 访问权限不同
父类不可直接访问子类,但是内部类可以直接通过外部类().内部类()
访问内部类。子类可以直接访问父类公开的属性和方法,但是内部类只能通过this@外部类
获取外部类的属性和方法