黑马程序员技术交流社区
标题:
今晚在复习内部类中的疑问
[打印本页]
作者:
黑马-王鹏
时间:
2013-3-16 23:59
标题:
今晚在复习内部类中的疑问
本帖最后由 黑马-王鹏 于 2013-3-17 00:14 编辑
内部类可以引用其它的包含类的成员吗?有没有什么限制?
(匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
求详细解答
作者:
爪哇攻城狮
时间:
2013-3-17 01:57
一个内部类对象可以访问创建它的外部类对象的内容
如果不是静态内部类,那没有什么限制。
匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,
但一个内部类可以作为一个接口,由另一个内部类实现。
匿名类本身就是通过继承类或者接口来实现的。
但是不能再显式的extends 或者implements了。
先定义一个接口:
interface Contents {
int value();
}
再定义一个类(构造函数不是默认的):
public class Wrapping {
private int i;
public Wrapping(int x) { i = x; }
public int value() { return i; }
}
先实现接口:
public class Parcel6 {
public Contents cont() {
return new Contents() {
private int i = 11;
public int value() { return i; }
}; // Semicolon required in this case
}
public static void main(String[] args) {
Parcel6 p = new Parcel6();
Contents c = p.cont();
}
}
再继承类:
public class Parcel7 {
public Wrapping wrap(int x) {
// Base constructor call:
return new Wrapping(x) {
public int value() {
return super.value() * 47;
}
}; // Semicolon required
}
public static void main(String[] args) {
Parcel7 p = new Parcel7();
Wrapping w = p.wrap(10);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2