(不好意思:刚才没有写完,下面跟着):
      如果我现在得到了一个DAO对象,那么能不能把这个DAO对象转化成USERDAO对象,然后再使用它的子类THISUSERDAO的对象中的方法呢?
     这样的意思也就是说DAO其实是向外提供了一个访问的接口,而它的实现细节USERDAO和THISUSERDAO都隐藏起来了,是这样吗?我不明白这样的原理,麻烦给解释一下!

解决方案 »

  1.   

    不能把DAO对象转化成USERDAO对象
    能把USERDAO对象转化成DAO对象
    建议看类的继承那一章
      

  2.   

    强制转换怎么不可以呀?
    USERDAO userdao=new USERDAO();
    DAO dao=(DAO)userdao;
      

  3.   

    可以的,但是你要注意一点你获得的DAO对象必须是UserDAO对象。just like this:DAO somedao = new ThisUserDAO();这样才可以进行强制类型转换,just like this:UserDAO udao = (UserDAO)somedao;
    udao.get();就是说必须是UserDAO类型的对象才可以强制类型转换。to worldsea(浪子):
    你的这个程序不是强制类型转换,不信你吧(DAO)去掉看看,不会报错的。
    另外不能对接口new UserDAO()。
    粗心了。
      

  4.   

    可以强制
    UserDAO ud=(UserDAO)dao;
    但是一定要是UserDAO,谁说不可以new 一个接口,
    new UserDAO(){
       public void get(){}
    };
      

  5.   

    to shine333(shine):
    "new UserDAO(){
       public void get(){}
    };"
    这种东东确实不是new一个接口,而是申明/定义了一个实现此接口的inner class,只不过是匿名类,看来大家考完SCJP后就把基础都忘了,接口比 abstract class 还抽象,不可能被实例化。