匿名内部类是否可以继承其它类?是否可以实现接口?

simon78 2005-12-16 06:41:39
Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以
implements(实现)interface(接口)?

在网上查了一下,看到两个版本,能和不能。

谁能给清楚地说明一下,thanks
...全文
4817 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
whyxx 2005-12-21
  • 打赏
  • 举报
回复
可以的,虽然继承普通类后,自己追加的方法不能直接调用(因为无法强制转换成自己的那个函名类),但可能通过反射机制来实现
gengtaoo 2005-12-21
  • 打赏
  • 举报
回复
我建了个Eclipse爱好者群:16658725,里面已有不少高手,欢迎大家加入!
老無所依 2005-12-21
  • 打赏
  • 举报
回复
还有就是这些问题在你不明白的时候,你完全可以自己写个简单的代码试试不就知道了
老無所依 2005-12-21
  • 打赏
  • 举报
回复
当染可以了,仔细看看SWING的监听机制就知道了, 那是最典型的匿名类的运用
yqj2065 2005-12-21
  • 打赏
  • 举报
回复
new I(){……
有趣吗?

建议楼主 把I写成抽象类、普通类玩一玩。

believefym(暮色,miss,迷失,miss。。。) 的话是中肯的,仅仅在接口上有点想当然。
yqj2065 2005-12-21
  • 打赏
  • 举报
回复
匿名内部类如何创建,new *****
它天生就必须以父类或父接口的名字为名字,随便写一个代码:

class A {
I getI(final String str){
return new I(){
public void dosth(){
System.out.print(str);}};

}
public static void main(String args[]) {
new A().getI("hi").dosth();
//System.out.print((new A()).getI("hi").dosth());
}
}

interface I{ void dosth();}
simon78 2005-12-21
  • 打赏
  • 举报
回复
我明白 二楼的意思了, 我现在确认了匿名内部类可以继承类,或者实现接口这个概念了,
谢谢 孤风
gufen 2005-12-16
  • 打赏
  • 举报
回复
to: believefym(暮色,miss,迷失,miss。。。)

你的 return new A(){...}; 是实现了接口A,而不仅是只定义了一个内部类。你可以自己在A接口中定义一个方法而不在return new A(){...}; 中实现,看看什么效果。

匿名内部类要实现或者继承类就是这种语法,当然匿名内部类是不能用implements,extends关键字来实现或继承其它类的。
weinickli 2005-12-16
  • 打赏
  • 举报
回复
应该可以~```
believefym 2005-12-16
  • 打赏
  • 举报
回复
一楼的解释说得很有问题,
二楼说说得很清楚了,自己看看,基本属于废话

首先楼主指的无名内部类实现接口指的是类本身定义的时候实现接口还是直接定义无名内部类的时候实现接口,前者肯定是可以的,后者应该是不行的,光从语法上都不能实现
class A implements SomeInterface{...}//这里实现接口肯定是可以的
class Main{
...
public A f(){
return new A(){...}//这里定义了一个无名内部类,要实现接口,语法上都是不能实现的
}
...
}

一楼的“先实现接口”“再继承类”,简直不知所谓
crazycy 2005-12-16
  • 打赏
  • 举报
回复
刚看过,2rd是好书
hucancan 2005-12-16
  • 打赏
  • 举报
回复
是啊,Think in java 上面说的很清楚,肯定是对的,自己看看
gufen 2005-12-16
  • 打赏
  • 举报
回复
完全可以,看下边的例子,摘自Think in Java,The 2nd Edition.

先定义一个接口:
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);
}
}

更详细请看Think in Java,现在是The 3rd Edition.
一. Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用最有效率的方法算出2乘以8等於几? 9 9、请设计一个一百亿的计算器 9 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 11 11、"=="和equals方法究竟有什么区别? 11 12、静态变量和实例变量的区别? 12 13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域public,private,protected,以及不写时的区别 13 18、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 14 19、构造器Constructor是否可被override? 15 20、接口是否继承接口? 抽象类是否实现(implements)接口? 抽象类是否继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 15 21、写clone()方法时,通常都有一行代码,是什么? 15 22、面向对象的特征有哪些方面 15 23、java中实现多态的机制是什么? 17 24、abstract class和interface有什么区别? 17 25、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 18 26、什么是内部类?Static Nested Class 和 Inner Class的不同。 19 27、内部类可以引用它的包含类的成员吗?有没有什么限制? 20 28、Anonymous Inner Class (匿名部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 21

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧