sanshui_yangfei
2019-12-26 21:37
采纳率: 33.3%
浏览 351
已采纳

一个DaoImpl类,既想通过实现IDao接口达到通过接口调用的目的,又想通过继承抽象类,使用父类的通用方法。应该怎么做?

1、IDao.java

package cn.test;

public interface IDao {
    public void Query();
}

2、GeneralDao.java

package cn.test;

public abstract class GeneralDao {
    public void generalDaoMethod() {
        System.out.println("调用generalDaoMethod方法");
    }
}

3、DaoImpl.java

package cn.test;

public class DaoImpl extends GeneralDao implements IDao {

    @Override
    public void Query() {
        System.out.println("调用接口的个性化查询方法");
    }

}

4、我能想到的就是强转,但觉得不好。
App.java

package cn.test;

public class App {

    public static void main(String[] args) {
        IDao dao=new DaoImpl();
        dao.Query();
        ((GeneralDao)dao).generalDaoMethod();
    }

}

5、输出

调用接口的个性化查询方法
调用generalDaoMethod方法

有没有其他更好的方法可以实现既可通过接口调用,又可以使用父类的方法?

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

  • VICTOR_fusheng 2019-12-27 14:39
    最佳回答

    做不到,你用IDao dao = new DaoImpl();这种方式,那么dao就只能执行IDao里有的方法,不能执行generalDaoMethod(),想这种使用就不要用父类,直接DaoImpl dao = new DaomImpl();

    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题