黑马程序员技术交流社区

标题: 请教一个关于匿名对象和类作为形参的问题 [打印本页]

作者: lucy198921    时间: 2013-3-24 13:07
标题: 请教一个关于匿名对象和类作为形参的问题
本帖最后由 lucy198921 于 2013-3-24 14:00 编辑

假如我有3个类,代码如下

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();
    }



作者: 马利    时间: 2013-3-24 13:21
第一个问题,你的参数传的对吗?
你定义的public void getinfo(classB b)方法里面型参是一个classB类型的引用变量
而你调用的时候呢b.getinfo(12,"jack");传递的是int型与string型的两个实参
方法调用错误
第二个问题,你问匿名对象怎么用,一般匿名对象是调用类实例的方法,匿名对象只能使用一次,因为你下次想用已使用的匿名对象也找不到它,对匿名对象的成员变量操作是没有意义的,同样下次找不到,匿名对象只能用来传参
作者: 江公亮    时间: 2013-3-24 15:09
对于第一个问题,getinfo(classbB,b),需要的是classB的对象,或者它的一个子类对象,
你那样传参数肯定是不行的,在Struts中,有一个叫domain域的,可以想你那样传参数,当时我记得是从客户端传向服务器端,并且classB还要实现相应的get,set方法,,。
匿名类,顾名思义,该类只有一个方法体,没有类名,一般和抽象类和接口,联合使用。
  1. abstract class test{
  2.     int age=8;
  3.     String name="小明";
  4. abstract void getinfo();
  5. }
  6. public class Tester {
  7. public Tester(test T){//构造Tester是,需要抽象类的对象,抽象类不可能有对象吧,但是要知道抽象类可以有子类
  8.   System.out.print(T.age+T.name);
  9. }
  10. public static void main(String[] args){
  11.   Tester tester =new Tester([color=red]new test(){
  12.    @Override
  13.    void getinfo() {
  14.     // TODO Auto-generated method stub
  15.    } });           //通过匿名类,生成Tester的子类对象,再上转成Test对象
  16. [/color]  
  17. }
  18. }
复制代码





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