接口继承-关于java中Dao模块接口问题,请教一下原理

问题描述

关于java中Dao模块接口问题,请教一下原理

BaseDao.java
public interface BaseDao {}

BaseDaoImpl.java
public abstract class BaseDaoImpl implements BaseDao {}

UserService.java
public interface UserService extends BaseDao{}

UserServiceImpl.java
public class UserServiceImpl extends BaseDaoImpl implements UserService {} //User就不粘出来了

我想问下,为什么UserService这个接口还要继承一下BaseDao接口?UserServiceImpl不是继承了BaseDaoImpl了嘛,基础操作都有了。不继承也没有什么影响呀? 请知道的大神给说下原理。

解决方案

首先BaseDao抽象的是所有共有的操作,UserService抽象的是用户操作相关方法,对应的实现类也有相同的继承体系 UserServiceImpl继承BaseDaoImpl,这是设计模式的一种,好像是bridge模式;此外从面相解决编程的角度, UserService继承 BaseDao的话,那么 UserServiceImpl这个类实例也是 BaseDao类型,注入 BaseDao类型时可以使用 UserServiceImpl。

解决方案二:

一般都是在service里面直接注入dao就行了的、这个写法有点怪

解决方案三:

可能这个service是虚拟类、要实现未实现的方法

解决方案四:

感谢回答,但是感觉楼上回答的不是太合理。这种代码风格一般在视频和老师那里看到的。

时间: 2024-10-31 11:31:29

接口继承-关于java中Dao模块接口问题,请教一下原理的相关文章

java中监听接口里面的onclick方法为什么被称为回调方法

问题描述 java中监听接口里面的onclick方法为什么被称为回调方法 那普通接口有回调方法吗,普通类有回调方法吗, 回调方法是如何定义的 解决方案 你别被回调这个词搞蒙了,其实就是把方法当做参数而已 解决方案二: 因为onclick你定义了,不是自己调用,而是间接由按钮点击后系统类库去调用,所以叫回调. 英文叫做callback. 解决方案三: 回调方法简单的说就是a方法都用b方法,b方法执行过程中需要调用a方法,callback 解决方案四: [个人向]Android回调接口的实现方法ja

java中实现Serializable接口的类有什么特点?

问题描述 java中实现Serializable接口的类有什么特点? java中实现Serializable接口的类有什么特点,还看到这个实现该接口的类里面一个常量,private static final long serialVersionUID = 1L;如何理解这个常量呢 解决方案 Serializable是一个标识接口,没有需要实现的方法,凡是实现该接口的类都可以进行序列化和反序列化操作. 实现serializable接口的作用是就是可以把对象存到字节流,然后可以恢复.所以你想如果你的

java 中http协议接口的开发,json作为返回数据格式

问题描述 java 中http协议接口的开发,json作为返回数据格式 在Java中要开发一个http接口,供别人调用访问并获取json返回数据. 解决方案 可以使用:spring-boot,一个轻量级的webservice可以参考:http://projects.spring.io/spring-boot/

列表-关于JAVA中的List接口

问题描述 关于JAVA中的List接口 有如下说明代码 class A{} main() { Listall=ArrayList(); all.add(new A()); all.add(new A()); A[] a1=new A[2]; a1=(A[])all.toArray(); A[] a2=all.toArray(new A[]{}); } 以上代码, a1=(A[])all.toArray();总是报ClassCastException错误, 而toArray()方法返回的是Obje

Java中应用Observer接口实践Observer模式

在Java中通过Observable类和Observer接口实现了观察者模式 .Observer对象是观察者,Observable对象是被观察者. 1. 实现观察者模式 实现观察者模式非常简单, [1]创建被观察者类,它继承自java.util.Observable类: [2]创建观察者类,它实现java.util.Observer接口: [3]对于被观察者类, 添加它的观察者: void addObserver(Observer o) addObserver()方法把观察者对象添加到观察者对象

Java中抽象类和接口区别的个人见解

抽象类 抽象类是用来捕捉子类的通用特性的 .它不能被实例化,只能被用作子类的超类.抽象类是被用来创建继承层级里子类的模板.以JDK中的GenericServlet为例: public abstract class GenericServlet implements Servlet, ServletConfig, Serializable {     // abstract method     abstract void service(ServletRequest req, ServletRe

Java中实现Comparator接口和用法实例(简明易懂)_java

在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标. 接下来我们模拟下在集合对象中对日期属性进行排序 一.实体类Step package com.ljq.entity; /** * 运号单流程 * * @author Administrator * */ public class Step{ /** 处理时间 */ private String acceptTime = ""; /** 快件所在地点 */ private String

c# 接口 类-C# 类中包含一个接口属性的意义,在ArcEngine中经常遇到

问题描述 C# 类中包含一个接口属性的意义,在ArcEngine中经常遇到 请教各位,如果一个类中含有一个接口属性,那么是否意味着这个类实现了该接口,如果没有实现,那么包含一个接口属性有什么意义

c++中继承和java中继承的对比

java中: class Parent{ public void test(int a){ System.out.println("Parent:" + a); System.out.println(this.getClass().getName()); } } class Child extends Parent{ public void test(int a, int b){ System.out.println("Child:" + a + " &q