Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口):
匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
这里是这么说的,下面有一段代码是我验证用的:这是一个RunnableTest类 MyThread1, MyThread2, MyThread3 这里有3个内部类
public class RunnableTest{
public static void main(String[] args){
MyThread1 mt1 = new MyThread1();
MyThread2 mt2 = new MyThread2();
MyThread3 mt3 = new MyThread3();
mt2.th.start();
mt1.th.start();
mt3.th.start();
}
}
class MyThread1 implements Runnable{
public MyThread1() {
System.out.println("this is MyThread1 class");
}
Thread th = new Thread(this);
public void run(){
for (int i = 0; i < 10; i++){
System.out.println("BMW" + i);
}
}
}
class MyThread2 extends Test{
public MyThread2() {
System.out.println("this is MyThread2 class");
}
Thread th = new Thread(){
public void run(){
for (int i = 0; i < 10; i++){
System.out.println(i);
}
}
};
}
class MyThread3 {
Runnable ra = new Runnable(){
public void run(){
for (char ch = 65; ch < 70; ch++){
System.out.println(ch);
}
}
};
Thread th = new Thread(ra);
}
这里是另外一个类Test
public class Test extends MyThread1 {
public Test(){
System.out.println("this is test");
}
public static void main(String[] args) {
Test test=new Test();
}
}
现在的问题就是来了&…… 别笑哦 我知道会有点白痴,但是我真的不明白
就是
1,为什么叫匿名内部类 上面MyThread1, MyThread2, MyThread3 这些内部类不是都有名字么,如果这个不算,那上面样的才算名字?
2,上面说不能extends(继承) 其它类,那为什么MyThread2可以继承Test类?
3,但一个内部类可以作为一个接口,由另一个内部类实现这又是上面意思,是 class MyThread3 implements MyThread2{ 这样?
请各位大侠提俺解惑……
匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
这里是这么说的,下面有一段代码是我验证用的:这是一个RunnableTest类 MyThread1, MyThread2, MyThread3 这里有3个内部类
public class RunnableTest{
public static void main(String[] args){
MyThread1 mt1 = new MyThread1();
MyThread2 mt2 = new MyThread2();
MyThread3 mt3 = new MyThread3();
mt2.th.start();
mt1.th.start();
mt3.th.start();
}
}
class MyThread1 implements Runnable{
public MyThread1() {
System.out.println("this is MyThread1 class");
}
Thread th = new Thread(this);
public void run(){
for (int i = 0; i < 10; i++){
System.out.println("BMW" + i);
}
}
}
class MyThread2 extends Test{
public MyThread2() {
System.out.println("this is MyThread2 class");
}
Thread th = new Thread(){
public void run(){
for (int i = 0; i < 10; i++){
System.out.println(i);
}
}
};
}
class MyThread3 {
Runnable ra = new Runnable(){
public void run(){
for (char ch = 65; ch < 70; ch++){
System.out.println(ch);
}
}
};
Thread th = new Thread(ra);
}
这里是另外一个类Test
public class Test extends MyThread1 {
public Test(){
System.out.println("this is test");
}
public static void main(String[] args) {
Test test=new Test();
}
}
现在的问题就是来了&…… 别笑哦 我知道会有点白痴,但是我真的不明白
就是
1,为什么叫匿名内部类 上面MyThread1, MyThread2, MyThread3 这些内部类不是都有名字么,如果这个不算,那上面样的才算名字?
2,上面说不能extends(继承) 其它类,那为什么MyThread2可以继承Test类?
3,但一个内部类可以作为一个接口,由另一个内部类实现这又是上面意思,是 class MyThread3 implements MyThread2{ 这样?
请各位大侠提俺解惑……
解决方案 »
- 一个关于log4j的问题
- java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
- 要做一个b2c,请给个意见
- 问个分页的问题
- Struts 2 拦截器问题
- 这个异常报了一个星期了还没解决!5555555555555
- 通过DB2JCC.JAR连接数据库出错
- 跪求JCreator 的中文使用手册
- html的简单问题
- 求大神指导js里面构建table,怎么取table里的值啊
- 在Eclipse下,为什么有的Java类需要serialVersionUID,而有的Java类不需要?
- application/x-www-form-urlencoded的请求如何处理
public class Goods3 {
public Contents cont(){
return new Contents(){《---这种才是
private int i = 11;
public int value() {
return i;
}
};
}
} 这里方法cont()使用匿名内部类直接返回了一个实现了接口Contents的类的对象,看上去的确十分简洁。
那你这个怎么被另一个内部类实现 这又是什么意思,匿名的内部类就是new一个已有的类? 我现在越来越美概念了,麻烦说的仔细点
[variable_type_superclass =] new superclass_name() {
// properties and methods
}[;]
public class Goods3 {
public Contents cont(){
return new Contents(){《---这个不是已有的类,是新建的你想用的类。。
private int i = 11;
public int value() {
return i;
}
}……
public void run(){ }
};
new Thread(
//这个就是匿名内部类
new Runnable() {
public void run() {
}
}
).start();
}
返回的就是该匿名内部类的实例
还有哪里不清楚呢?