黑马程序员技术交流社区

标题: 帮忙解释一下匿名对象和类作为形参的问题 [打印本页]

作者: 邱成    时间: 2012-9-22 23:10
标题: 帮忙解释一下匿名对象和类作为形参的问题
本帖最后由 邱成 于 2012-9-24 22:39 编辑

比如我有三个类
class classA{
int age;
}
class classB extends classA{
String name;
public void getinfo(classB b){
    System.out.println(name+age);
    }
}
_____________
class C{
    public static void main(String args[]){
    classB d=new classB;
    b.getinfo(12,"jack");---这样就不行,用类作为参数传入到底怎么调用呢?
    }
}

————————————————————
另外再问一下如果我用匿名对象调用classB的方法为什么返回的是NULL,比如我下面这么写,匿名对象到底该怎么用?
class classA{
int age;
}
class classB extends classA{
String name;
public void getinfo(){
    System.out.println(name+age);
    }
}
class C{
    public static void main(String args[]){
    new Classb().name="JACK";
    new Classb().age=12;
    new Classb().getinfo();
    }
作者: 程振    时间: 2012-9-22 23:50
问题太抽象了
至于匿名类的,可以给你说下怎么使用的,在android中可以大量使用匿名类来做位按钮的监听器,
例如,当单击按钮后,就执行匿名类中的方法
  1. public class MyActivity extends Activity {
  2.      protected void onCreate(Bundle icicle) {
  3.          super.onCreate(icicle);

  4.          setContentView(R.layout.content_layout_id);
  5.          
  6.          // 取得Button对象
  7.          final Button button = (Button) findViewById(R.id.button_id);
  8.          
  9.          // 注册按钮单击事件的监听器,这里使用匿名类
  10.          // 实际上是系统为你创建一个继承该接口的类,类名用户不可使用
  11.          button.setOnClickListener(new View.OnClickListener() {
  12.              public void onClick(View v) {
  13.                  // Perform action on click
  14.              }
  15.          });
  16.      }
  17. }
复制代码

作者: 尤圣回    时间: 2012-9-22 23:54
构造方法:
public classB(int a,String n){
   name = n ;
   age = a ;
}
第一个问题: b.getinfo(new classB(12,"jack")); //这样就可以了
第二个问题:
new Classb().name="JACK";
new Classb().age=12;
new Classb().getinfo();
每一句都在创建一个新的对象,所以第三句的那个对象你什么都给你传,所以都为null。
作者: 赵永康    时间: 2012-9-23 00:17
你所定义的 getinfo(classB b)是相当于传入一个Object对象,那么你在调用的时候,怎么传入的参数是(12,"jack");呢???


至于你第二个问题:new Classb().name="JACK";
    new Classb().age=12;
    new Classb().getinfo();
相当于你创建了三个对象,第一个name为JACK,第二个age为12,第三个对象直接调用的方法,此时第三个对象并没有给age和name显示初始化值,java虚拟机给其默认初始化为null,所以打印结果肯定是啦
注意你用匿名内部类就是相当于创建了三个对象,并不是同一个!!





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2