黑马程序员技术交流社区
标题:
.
[打印本页]
作者:
冯祖焱
时间:
2012-2-15 16:07
标题:
.
本帖最后由 冯祖焱 于 2017-8-16 09:55 编辑
.
作者:
刘基军
时间:
2012-2-15 16:30
1.
new B()
{
private int i=1;
public int value()
{
return i;
}
}
这表示:创建一个B类的子类的对象
2.
B bb=a.b(); //对象a调用其b()方法,由于返回值是B类型,所以“=”左边必须定义bb的类型为:B
3.代码不全,还缺少B类的定义,添加如下,可以编译成功:
class A
{
public B b()
{
return new B()
{
private int i=1;
public int value()
{
return i;
}
};
}
public static void main(String[] args)
{
A a=new A();
B bb=a.b();
}
}
class B
{
}
复制代码
作者:
钟保罗
时间:
2012-2-15 16:43
public B b(){
return new B(){
private int i=1;
public int value(){return i;}
};
复制代码
是在b方法里面new一个B类中的匿名内部类!
public static void main(String[] args){
A a=new A();
B bb=a.b();
}
}
复制代码
创建一个A类的对象,a.b();调用了A类中b的方法,在这个方法中创建了一个B类中的内部类,并返回出去,用bb变量接收了返回出来的匿名内部类的对象,因为这个匿名内部类B类里面的,所以bb变量就用B类型来接收。。。。。
作者:
毛溯澜
时间:
2012-2-15 20:03
B bb=a.b();多态,a.b()返回的是B的匿名子类对象,个人见解
作者:
魏腾飞
时间:
2012-2-15 21:22
本帖最后由 魏腾飞 于 2012-2-15 21:22 编辑
求认可···我进行了拆分,你看看对吧。也希望比较懂行的给点批评和建议。
public class A {
class B {
private int i = 1;
public int value() {
return i;
}
}
public B b() {
System.out.println("hah");
return new B();
}
public static void main(String[] args) {
A a = new A();
B bb = a.b();
}
}
作者:
刘豪杰
时间:
2012-2-16 10:16
一般要访问的内部类中定义的方法不超过三个时,会用匿名内部类来代替内部类的代码,主要就是为了简写代码,其实和内部类并没有太大区别
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2