局部内部类是在方法体内的类。
关于局部内部类的几个疑问:
1.外部类若想引用内部类的方法,是否可以像对待成员内部类那样再次书写一个方法来引用内部类方法?
答:不可以,因为内部类的对象都创建不出来,Java报错显示无法解决,另外一个方法引用另一个方法这没有问题,但是在局部内部类中这种
方式就演变成了一个方法引用另外一个方法体了,所以肯定是不行的。
2.包含内部类的方法必须返回该类么?
答:是的,若没有返回该类,在外部类引用含有内部类的方法时由于输出语句在内部类中,该语句无法输出,同时也不可以将该语句写在内部类
之外,写在外面无法引用类中的内容,所以必须返回类
3.包含内部类的方法的返回语句若有输出语句是否也可以输出?
答:不可以,直接输出赋初值的构造方法Java会报错,因为局部内部类无法直接或间接创建对象,只能通过方法来返回对象。但是,若方法中
的设定值无法传入类中方法体内,则会输出初值。
4.可以像对待成员内部类那样在主方法中书写创建内部类对象的语句么?
答:不可以,Java会报错,显示无法解决
5.在参数传递过程中,只能让内部类中方法的参数=外部类中方法的参数,输出内部类方法参数,不可以反过来,一正一反有根本意义上的区别,只能让外部类方法
的参数赋值给内部类方法的参数,若反过来,则是让内部类中方法参数赋值给外部类方法参数,这不符合逻辑。
6.关于接口的定义,接口是可以独立于类体之外的,不论是主类还是内部类。
7.虽然返回对象有赋初值,但是方法体中再次赋值,故输出的是再次赋的值。
8.返回的值没有相应的输出语句,也可以打印出来么?
答:这个问题问法有问题,构造方法含有参数的,在创建这个对象时就必须输入相对应类型的参数,创建对象的过程其实就是调用构造方法的过程,在这个过程中,
已经把参数传入输出语句,故可以输出。
package pers.yanzhenkei;
public class Demo {
public Demo(int y) {
System.out.println(y);
}
public static void main(String args[]) {
Demo a=new Demo(6);
}
}
package pers.yanzhenkei;
public class Demo { //外部类
public OutInterface outshow(String x) { //包含内部类的方法
class InnerClass implements OutInterface{ //局部内部类
public InnerClass(String y) { //局部内部类的构造方法
y=x;
System.out.println(y); //输出语句
}
}
return new InnerClass("do"); //创建对象时初始值是do
}
public static void main(String args[]) { //主类中的主方法
Demo a = new Demo(); //创建外部类对象
a.outshow("我是局部内部类"); //在方法中再次传入设定值
System.out.println("---end---"); //程序运行结束
}
}
interface OutInterface{ //为实现返回类的对象而设置的接口
}