精华内容
下载资源
问答
  • 而抽象在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象的一典型应用,假设某个项目的所有Servlet都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一...

    接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象类的一个典型应用,假设某个项目的所有Servlet类都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一个抽象的基类,让所有的Servlet都继承这个抽象基类,在抽象基类的service方法中完成权限判断、记录访问日志和处理异常的代码,在各个子类中只是完成各自的业务逻辑代码,伪代码如下:

    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public abstract class BaseServlet extends HttpServlet {
        public final void service(HttpServletRequest request, HttpServletResponse response)
                throws IOException, ServletException {
            // 记录访问日志
            // 进行权限判断
        }

        protected abstract void doService(HttpServletRequest request, HttpServletResponse response)
                throws IOException, ServletException;
            // 注意访问权限定义成protected,显得既专业,又严谨,因为它是专门给子类用的
    }

    class MyServlet1 extends BaseServlet {
        protected void doService(HttpServletRequest request, HttpServletResponse response)
                throws IOException, ServletException {
            // 本Servlet只处理的具体业务逻辑代码
        }
    }

    父类方法中间的某段代码不确定,留给子类干,就用模板方法设计模式。

    备注:这道题的思路是先从总体解释抽象类和接口的基本概念,然后再比较两者的语法细节,最后再说两者的应用区别。比较两者语法细节区别的条理是:先从一个类中的构造方法、普通成员变量和方法(包括抽象方法),静态变量和方法,继承性等6个方面逐一去比较回答,接着从第三者继承的角度的回答,特别是最后用了一个典型的例子来展现自己深厚的技术功底。

    展开全文
  • 多继承会产生钻石问题(菱形继承) B 和 C 继承自 A,且都重写了 A 中的同一个方法 ...接口中的方法是抽象的,一个类实现可以多个接口 假设这些接口中存在相同方法(方法名与参数相同),...

    多继承会产生钻石问题(菱形继承)

    • 类 B 和类 C 继承自类 A,且都重写了类 A 中的同一个方法
    • 类 D 同时继承了类 B 和类 C
    • 对于类 B、C 重写的类 A 中的方法,类 D 会继承哪一个?这里就会产生歧义
    • 考虑到这种二义性问题,Java 不支持多重继承


    Java 支持类实现多接口

    • 接口中的方法是抽象的,一个类实现可以多个接口
    • 假设这些接口中存在相同方法(方法名与参数相同),在实现接口时,这个方法需要实现类来实现,并不会出现二义性的问题


    从 JDK1.8 开始,接口中允许有静态方法和方法默认实现。当检测到实现类中实现的多个接口中有相同的默认已实现的方法,编译报错


    PS:在JDK 1.5 上实践,接口可以多继承接口

    package constxiong.interview;
    
    /**
     * 测试继承多接口,实现相同方法
     * 从 JDK1.8 开始,接口中允许有静态方法和方法默认实现
     * 当检测到实现类中实现的多个接口中有相同的默认已实现的方法,编译报错
     * @author ConstXiong
     * @date 2019-11-21 10:58:33
     */
    public class TestImplementsMulitInterface implements InterfaceA, InterfaceB {
    
    	public void hello() {
    		System.out.println("hello");
    	}
    
    }
    
    interface InterfaceA {
    	
    	void hello();
    
    	static void sayHello() {
    		System.out.println("InterfaceA static: say hello");
    	}
    
    	default void sayBye() {
    		System.out.println("InterfaceA default: say bye");
    	}
    }
    
    interface InterfaceB {
    	
    	void hello();
    	
    	static void sayHello() {
    		System.out.println("InterfaceB static: say hello");
    	}
    
    //	default void sayBye() {
    //		System.out.println("InterfaceB default: say bye");
    //	}
    }
    

     


    【Java面试题与答案】整理推荐

     

    展开全文
  • 接口 接口中的抽象方法只能是 public 类型的,并且默认即为 public abstract 类型。

    接口
    接口中的抽象方法只能是 public 类型的,并且默认即为 public abstract 类型。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    接口可以继承多个接口
    接口B
    在这里插入图片描述
    不能改变接口中定义的常量值
    在这里插入图片描述

    接口H
    在这里插入图片描述
    接口A 继承 接口B和接口H;接口不能实现接口
    在这里插入图片描述
    类可以同时实现多个接口
    类C
    可以实现多个接口
    在这里插入图片描述
    抽象类D
    抽象类中抽象方法的访问权限可以是public、protectedl;接口只能是public
    抽象类中可以有非抽象方法;接口中的方法都是抽象方法
    抽象类中可以定义普通成员变量;接口中不能定义普通成员变量
    抽象类和接口都能定义静态成员变量,抽象类访问权限可以是任意的;但是接口只能是 public static final即常量
    抽象类中可以有构造方法;接口中不能有构造方法
    一个类只能实现一个抽象类;但一个类可以实现多个接口,接口可以继承多个接口

    在这里插入图片描述
    类F
    一个类只能继承一个类,java继承多个类时编译时就不通过
    在这里插入图片描述

    为什么java支持 一个类实现多个接口;但是只能继承一个类
    从上诉例子中可以看出,如果子类F可以同时继承抽象类D和类C,如果类D和类C中存在相同(同名同参)的方法,即非抽象方法(都有自己的方法体);那么子类F就不知道选哪一个父类的方法进行重写了。

    展开全文
  • 一个类可以实现多个接口,但是只能继承一个
    public class SpbmServiceImpl extends BasicServiceImpl implements ISpbmService,ISpbmDao
    {
    
    }

    一个类可以实现多个接口但是只能实现一个类

    展开全文
  • java 不支持多继承,但类可以实现多个接口,间接的实现多继承,也可以通过内部。 参考代码:MultiExtendsTest // 测试间接的实现多继承 public class MultiExtendsTest extends D implements A, B, C { @...
  • java 一个怎么实现个接口

    万次阅读 2019-03-20 18:44:06
    直接用英文逗号分隔就可以了,比如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 inerfaceIHello{ ...
  • 1、一个实现类实现多个接口 例如:serviceImpl implements Interface1,Interface2 在controller中 @AutowiredInterface1 只能调用Interface1接口的方法 总结,注入单个接口,只能调用对应的接口方法 2、一个...
  • 个接口多个实现,指定实现类

    万次阅读 2018-04-14 21:49:38
    目的:一个接口多个实现时,根据不同的条件调用不用的实现1、有如下接口public interface Pay { public Object pay(Map<String,Object> map); }2、有如下两个实现实现一:@Service("weixinPay&...
  • 一、简单例子: 1. 直接new一实例,这样肯定知道用的哪个实例 ...举例子:A接口,A1,A2,A3实现A接口,有一eat方法,A1:吃饭,A2:吃鱼,A3:吃肉 需要得到"吃肉",那么 A a = n
  • 一个匿名内部一定是继承一个或者实现一个接口,new了这个父类或接口名的内部还带内容,我就想问能不能还能不能继承其他或实现其他接口。 如果我表达不好,不好理解, 那...匿名内部能不能实现多个接口??
  • 最近写了前台一个管理模块,后来也是我来写,采用四层架构,在定义接口时,基本是一个接口对应一个实现类,使用@Autowired注解,但我想如果有多个实现类,如何注解,来梳理一下 举例说明: 1、接口:IAnimal 2、实现...
  • spring注解识别一个接口多个实现类方法,在引用中匹配到正确的实现类接口如下:public interface Filter { public String doFilter(String param); }接口实现类:public class TimeFilter implements Filter {...
  • Java - 一个类实现多个接口,有相同签名的default方法会怎么办 public interface A { default void hello() { System.out.println("Hello from A"); } } public interface B extends A { default ...
  • 实现动态调用,方法有很种,在这里记下一种我觉得比较简单的,方便以后翻阅。 接口类 package com.su.mybatis.oracle.service; public interface TestService { String firstStep(); String secondStep()...
  • 个接口多个实现类 - Spring 的 @Autowired 和 @Qualifier 配合注入 1. 首先, Interface1 接口有两个实现类 Interface1Impl1 和 Interface1Impl2 Interface1 接口: package com.example.service; /** * ...
  • java中接口可以实现多个接口吗?

    千次阅读 2016-04-01 14:35:17
    转自:...首先,java中的接口别说实现多个接口了,一个接口也不能实现。因为接口中的方法是没有方法体的,所以不能实现任何
  • @Autowired一个接口多个实现类

    万次阅读 2019-04-24 17:25:34
    @Autowired是spring的注解,默认使用的是byType的方式向Bean里面注入相应的Bean。例如: @Autowired private UserService userService; 这段代码会在初始化的时候...但是如果UserService这个接口存在多个实现类的时...
  • 1、接口:IUserService public interface IUserService { ...2、实现类:UserServiceImpl,实现了UserService接口 @Service("UserServiceImpl ") public class UserServiceImpl implements IUser...
  • 2. 一个的直接父类是唯一的,但是一个类可以同时实现多个接口。 格式: public class MyInterfaceImpl implements MyInterfaceA, MyInterfaceB { // 覆盖重写所有抽象方法 } 3. 如果实现所实现的多个接口...
  • 例子: 1. 直接new一实例,这样肯定知道用的哪个实例 ...举例子:A接口,A1,A2,A3实现A接口,有一eat方法,A1:吃饭,A2:吃鱼,A3:吃肉 需要得到"吃肉",那么 A a = new A3(); 需要得到...
  • 个接口多个实现类的调用方式

    千次阅读 2019-02-25 10:27:21
    A用户调用Aservice实现类,B用户调用Bservice实现类 1、使用switch-case public static Person printPerson(int kind) { Person p = null; switch (kind) { case FIRST: p = new A("人1");...
  • 话不多说: ...三、建立实现多个实现:用于实现具体方法(注意:实现需要注入容器) 四、建立操作类型工厂 五、使用方法示例:这个标注的对象就是根据请求参数的类型来动态选择的。 ...
  • 抽象类可以实现接口吗?有什么意义?

    万次阅读 多人点赞 2019-06-03 19:49:52
    2.这不是有没有意义的事情,是一种思想,当你自己写的想用接口中个别方法的时候(注意不是所有的方法),那么你就可以用一个抽象实现个接口(方法体中为空),然后再用你的继承这个抽象,这样就可以达到...
  • 在java中 一个中不能继承多个接口,但是可以通过一个接口继承多个接口实现。具体代码如下public interface LanguageBeharvior { public void language(); }public interface SpeakBeharvior { public void ...
  • 一般来说我们的service接口都是只有一个实现类而已,但有些时候,确实会有两个实现类的情况,那这个时候我们怎么自动注入这个接口呢? 1、首先,有一个接口PersonService,然后再写两个实现类PersonServiceImp1、...
  • 如题所述,当一个接口多个子类实现时,Spring框架怎样从容器中正确取出我们想要的实例呢? (定义了CommonService接口,同时有个两个子类实现了这个接口,同时两个实现类上都加了@Service注解,表明在项目启动...
  • 个接口多个实现类,当调用接口中的方法时,如何判定用的是哪个实现类? 1.直接new一个子类实例,这样肯定知道用的哪个实例。 2.定义接口类型的变量,用某个实例去初始化,这样也可以确定用的哪个实例。 代码...
  • 参考文章:https://blog.csdn.net/mazuyu408/article/details/79629846 ... 先说明下场景,代码如下: 有如下接口: public interface EmployeeService { public EmployeeDto...
  • 所以用到了一个接口多个实现类,每个实现类查询不同数据库。记录一下接口是怎么调用不同的实现类的。 定时任务一: 定时任务二: 同时继承了一个实现类AbstractSendDataTask   applicationContext.xml...
  • 个接口能继承另一个接口,和之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。 下面的Sports接口被Hockey和Football接口继承: // 文件名: Sports.java public interfa

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,548,589
精华内容 1,019,435
关键字:

类可以实现多个接口