如题!局部内部类和匿名内部类都必须用上接口??
老师,这个怎么写成不用接口??
interface OutInterface2 { //定义接口
}
class OuterClass3 {
public OutInterface2 doit(final String x) { // doit()方法参数为final类型
// 在doit()方法中定义一个内部类
class InnerClass2 implements OutInterface2 {
InnerClass2(String s) {
s = x;
System.out.println(s);
}
}
return new InnerClass2("doit");
}
}
你搞懂两个概念就容易理解了这个问题了:
1. 局部变量的有效范围。不管是成员内部类还是匿名内容类,他们的有效范围就在最近的大括号之内,超出这个括号范围以外的地方是无法使用的。
2. 类的继承关系。不管是继承类,还是实现接口,内部类都建立了一个“子类”身份。如果想要在超出有效范围的地方调用子类逻辑,就需要将子类转为父类对象调用。这属于面相对象开发的特点。
针对你提出的这个问题,可以从两方面解决:
1. 成员内部类不要在有效范围以外的地方使用。只在doit()里面创建并调用内部类对象。
2. 将父接口改为父类。把OutInterface2改成类,并在OutInterface2类中创建构空的造构造方法,让子类去重写这个构造方法,也能实现相同的效果。
30 三月 2025 | ||||||
---|---|---|---|---|---|---|
4:004:054:104:154:204:254:304:354:404:454:504:55 | ||||||
今日 |
30 三月 2025 | ||||||
---|---|---|---|---|---|---|
0:001:002:003:004:005:006:007:008:009:0010:0011:0012:0013:0014:0015:0016:0017:0018:0019:0020:0021:0022:0023:00 | ||||||
今日 |
三月 2025 | ||||||
---|---|---|---|---|---|---|
日 | 一 | 二 | 三 | 四 | 五 | 六 |
23 | 24 | 25 | 26 | 27 | 28 | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 | 1 | 2 | 3 | 4 | 5 |
今日 |
2025 | ||||||
---|---|---|---|---|---|---|
一月二月三月四月五月六月七月八月九月十月十一月十二月 | ||||||
今日 |
2020-2029 | ||||||
---|---|---|---|---|---|---|
201920202021202220232024202520262027202820292030 | ||||||
今日 |
30 三月 2025 | ||||||
---|---|---|---|---|---|---|
4:004:054:104:154:204:254:304:354:404:454:504:55 | ||||||
今日 |
30 三月 2025 | ||||||
---|---|---|---|---|---|---|
0:001:002:003:004:005:006:007:008:009:0010:0011:0012:0013:0014:0015:0016:0017:0018:0019:0020:0021:0022:0023:00 | ||||||
今日 |
三月 2025 | ||||||
---|---|---|---|---|---|---|
日 | 一 | 二 | 三 | 四 | 五 | 六 |
23 | 24 | 25 | 26 | 27 | 28 | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 | 1 | 2 | 3 | 4 | 5 |
今日 |
2025 | ||||||
---|---|---|---|---|---|---|
一月二月三月四月五月六月七月八月九月十月十一月十二月 | ||||||
今日 |
2020-2029 | ||||||
---|---|---|---|---|---|---|
201920202021202220232024202520262027202820292030 | ||||||
今日 |