Java内部类实例化的问题
发布网友
发布时间:2022-05-01 14:35
我来回答
共1个回答
热心网友
时间:2023-10-19 03:07
你要知道内部类的特点,内部类可以访问包装他的外部类的所有,方法和属性,包括私有方法,但是哪怕对同一个包下面其他类来说,内部类是隐藏的,也就是说,如果要访问内部类,就必须先要得到他的外部包装类,得到那个句柄之后在new 内部类,就可以调用他的方法了,你这个属于方法内部类,即,外部类的方法里面定义了内部类,方法内部类有个规定就是内部类的实例化是在方法里面定义的,这个必须, class Outer {
public void doSomething(){
final int a =10;
class Inner{
public void seeOuter(){
System.out.println(a);
}
}
Inner in = new Inner();
in.seeOuter();
}
public static void main(String[] args) {
Outer out = new Outer();
out.doSomething();
}
}
我想你应该看懂了吧,总之你要知道,想调用内部类,就必须先实例化外部类,不然是访问不了内部类的,另外内部类在java应用中不是特别常见,不过还是很重要的,他是解决java只支持单继承所带来的瑕疵,内部类很好的解决了,
热心网友
时间:2023-10-19 03:08
你要知道内部类的特点,内部类可以访问包装他的外部类的所有,方法和属性,包括私有方法,但是哪怕对同一个包下面其他类来说,内部类是隐藏的,也就是说,如果要访问内部类,就必须先要得到他的外部包装类,得到那个句柄之后在new 内部类,就可以调用他的方法了,你这个属于方法内部类,即,外部类的方法里面定义了内部类,方法内部类有个规定就是内部类的实例化是在方法里面定义的,这个必须, class Outer {
public void doSomething(){
final int a =10;
class Inner{
public void seeOuter(){
System.out.println(a);
}
}
Inner in = new Inner();
in.seeOuter();
}
public static void main(String[] args) {
Outer out = new Outer();
out.doSomething();
}
}
我想你应该看懂了吧,总之你要知道,想调用内部类,就必须先实例化外部类,不然是访问不了内部类的,另外内部类在java应用中不是特别常见,不过还是很重要的,他是解决java只支持单继承所带来的瑕疵,内部类很好的解决了,