1. Java中的内部类和嵌套类
//内部类,内部类持有了外部类的引用,所以在内部类中可以调用外部类的方法
public class JavaOuter extends Activity {
private String text = "KKK";
private void funOuter() {
text = "BBB";
}
class Inner {
private void funInner() {
funInner();
text = "ABC";
startActivity(new Intent(JavaOuter.this, MainActivity.class));
}
}
}
//嵌套,内部类不持有外部类的引用,所以在内部类中不可以调用外部类的方法
public class JavaOuter extends Activity {
private String text = "KKK";
private void funOuter() {
text = "BBB";
}
static class Inner {
private void funInner() {
funInner();
text = "ABC";
//startActivity(new Intent(JavaOuter.this, MainActivity.class));
}
}
}
区分内部类与嵌套类,很简单,内部类存储了外部类的引用,嵌套类却没有。
2. kotlin中的嵌套类和内部类
Kotlin中的内部类与嵌套类的定义,跟Java并没有什么不同,区别在于在没有任何修 饰的情况下,定义在另一个类内部的类将被默认为嵌套类,不持有外部类的引用,如果要将 它声明为一个内部类,则需要加上inner修饰符,代码如下:
class KotlinOuter : Activity() {
private var mText = "outer"
private fun funOuter() {
mText = "outer fun"
}
inner class Inner {
private fun funInner() {
mText = "inner"
funOuter()
startActivity(Intent(this@KotlinOuter, MainActivity::))
}
}
}