精华内容
下载资源
问答
  • 一个类可以实现多个接口,但只能继承一个抽象类。
    万次阅读
    2018-12-25 22:01:55

    接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象类的一个典型应用,假设某个项目的所有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个方面逐一去比较回答,接着从第三者继承的角度的回答,特别是最后用了一个典型的例子来展现自己深厚的技术功底。

    更多相关内容
  • JAVA:一个类实现多个接口

    千次阅读 2021-02-12 16:54:17
    它们之间区别:接口是公开的,里面不能有私有的方法或变量,而抽象类是可以有私有方法或私有变量的;代码演示:接口Apublic interface A {public abstract void play() ;public abstract void beFriendly();}接口B...

    abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制。它们之间区别:

    接口是公开的,里面不能有私有的方法或变量,而抽象类是可以有私有方法或私有变量的;

    代码演示:

    接口A

    public interface A {

    public abstract void play() ;

    public abstract void beFriendly();

    }

    接口B

    public interface B {

    public abstract void play() ;

    public abstract void beFriendly();

    }

    一个类实现多个接口@Service("weixinPay")

    public class WeixinPay implements Pay{

    @Overrid

    public Object pay(Map map){

    return "weixinpay";

    }

    }

    接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量;

    实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现;

    接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现;

    接口可以实现多重继承,而一个类只能继承一个超类;

    ce9126435a990d8a3bf1b66d6f282fcc.png

    扩展资料:

    Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

    两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”。

    功能

    在Java语言规范中,一个方法的特征仅包括方法的名字,参数的数目和种类,而不包括方法的返回类型,参数的名字以及所抛出来的异常。在Java编译器检查方法的重载时,会根据这些条件判断两个方法是否是重载方法。但在Java编译器检查方法的置换时,则会进一步检查两个方法(分处超类型和子类型)的返还类型和抛出的异常是否相同。

    接口实现和类继承的规则不同,为了数据的安全,继承时一个类只有一个直接父类,也就是单继承,但是一个类可以实现多个接口,接口弥补了类的不能多继承缺点,继承和接口的双重设计既保持了类的数据安全也变相实现了多继承。

    展开全文
  • 【JAVA】实现多个接口

    千次阅读 2019-10-17 16:26:18
    通过动物游泳奔跑飞行来模拟实现多个接口,因为这种情况下,我们需要让一个类同时继承多个父类,这件事情在有些编程语言中可以通过多继承的方式来实现,但是JAVA中只支持单继承,一个类只能继承一个父类,但是可以...

    题目:
    通过动物游泳奔跑飞行来模拟实现多个接口,因为这种情况下,我们需要让一个类同时继承多个父类,这件事情在有些编程语言中可以通过多继承的方式来实现,但是JAVA中只支持单继承,一个类只能继承一个父类,但是可以同时实现多个接口,这样也就可以达到类似于多继承的效果

    (1)

    
    public class Animal {
        protected String name;
    
        public Animal(String name) {
            this.name = name;
        }
    }
    
    

    (2)

    
    public class Fish extends Animal implements ISwimming{
        public Fish(String name) {
            super(name);
        }
    
        @Override
        public void swim() {
            System.out.println(this.name + "正在用尾巴游泳");
        }
    }
    

    (3)

    
    public class Frog extends Animal implements IRunning, ISwimming {
        public Frog(String name) {
            super(name);
        }
    
        @Override
        public void run() {
            System.out.println(this.name + "正在往前跳");
        }
    
        @Override
        public void swim() {
            System.out.println(this.name + "正在蹬腿游泳");
        }
    }
    
    

    (4)

    
    public class Cat extends Animal implements IRunning{
        public Cat(String name) {
            super(name);
        }
        @Override
        public void run() {
            System.out.println(this.name + " 正在用四条腿跑步");
        }
    }
    
    

    (5)

    
    public class Duck extends Animal implements ISwimming, IRunning, IFlying {
    
        public Duck(String name) {
            super(name);
        }
    
        @Override
        public void fly() {
            System.out.println(this.name + "正在用翅膀飞");
        }
    
        @Override
        public void run() {
            System.out.println(this.name + "正在用两条腿跑");
        }
    
        @Override
        public void swim() {
            System.out.println(this.name + "正漂在水上");
        }
    }
    
    

    (6)

    
    public interface IFlying {
        void fly();
    }
    
    
    public interface ISwimming {
        void swim();
    }
    
    
    public interface IRunning {
        void run();
    }
    

    (7)

    
    public class Test {
        public static void main(String[] args) {
            Cat cat = new Cat("小猫");
            walk(cat);
            Duck duck = new Duck("小鸭");
            walk(duck);
            Fish fish = new Fish("小鱼");
            swim(fish);
            Frog frog = new Frog("小青蛙");
            walk(frog);
            swim(frog);
        }
    
        public static void walk(IRunning running) {
            System.out.println("我带着伙伴去散步");
            running.run();
        }
    
        public static void fly(IFlying flying) {
            System.out.println("我看见伙伴在飞");
            flying.fly();
        }
    
        public static void swim(ISwimming swimming) {
            System.out.println("我带着伙伴游泳");
            swimming.swim();
        }
    }
    
    
    展开全文
  • 多继承会产生钻石问题(菱形继承) 类 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面试题与答案】整理推荐

     

    展开全文
  • 1、一个实现类实现多个接口 例如:serviceImpl implements Interface1,Interface2 在controller中 @AutowiredInterface1 只能调用Interface1接口的方法 总结,注入单个接口,只能调用对应的接口方法 2、一个...
  • java 不支持多继承,但类可以实现多个接口,间接的实现多继承,也可以通过内部类。 参考代码:MultiExtendsTest // 测试间接的实现多继承 public class MultiExtendsTest extends D implements A, B, C { @...
  • 接口 接口中的抽象方法只能是 public 类型的,并且默认即为 public abstract 类型。
  • 一个类可以实现多个接口,但是只能继承一个类
  • 2. 一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。 格式: public class MyInterfaceImpl implements MyInterfaceA, MyInterfaceB { // 覆盖重写所有抽象方法 } 3. 如果实现类所实现的多个接口...
  • java中接口可以实现多个接口吗?

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

    万次阅读 2016-11-15 05:27:30
     但有个无论多继承还是多实现都存在的隐含问题:多个接口中有重名方法怎么办?  显然这种bug,接口编写者不会发现,只有程序员在写实现类时,ide首先就会报错。  解决方法: 实现类里写个内部类,分别实现两...
  • 问题:现有接口B和C,这两个接口中均包含了方法fun(); interface B{ public double fun(); } interface C{ public void fun(); } 如果类A实现了B和C接口,那么需要如何实现才不会出错? 关键:一个类实现了两个具有...
  • 个接口多个实现,指定实现

    万次阅读 2018-04-14 21:49:38
    目的:一个接口多个实现时,根据不同的条件调用不用的实现1、有如下接口public interface Pay { public Object pay(Map<String,Object> map); }2、有如下两个实现实现一:@Service("weixinPay&...
  • 个接口多个实现方法具体调用

    千次阅读 2020-01-06 18:08:26
    1.如果这个接口下的实现类我们都要遍历调用 可以在impl中: //DimensionDetailService为接口 @Autowired privat Map<String,DimensionDetailService> map; //然后就可以遍历调用啦 map.values()....
  • 如:` class A implements Interface1,Interface2{ //这里该怎么写呢? } interface Interface1{ public void method(); } interface Interface2{ public int method(); }
  • Objective C不能直接使用多重继承。cocoa中所有的类都是NSObject的子类,多重继承在这里是用protocol委托代理来实现的。 一个类可以实现多个接口
  • 1.http消息头管理器和httpCookie管理器都是公共变量,所以需要...3.提取session里面(引用名称:是随便起的名字,但是必须与下面shell里面的变量对应,正则表达式:response headers里面的返回值名字必须与接口返...
  • 实现动态调用,方法有很种,在这里记下一种我觉得比较简单的,方便以后翻阅。 接口类 package com.su.mybatis.oracle.service; public interface TestService { String firstStep(); String secondStep()...
  • java 一个类怎么实现个接口

    万次阅读 2019-03-20 18:44:06
    n个接口都是使用逗号分隔 public   String sayHello(String name) {   return   "Hello, "   + name;   } public   String sayHi(String name) {   return   ...
  • JAVA中implements实现多接口

    千次阅读 2019-09-11 10:59:28
    JAVA中implements实现多接口 这里有一游戏,人猿泰山。 主角是一单独的类,这里我们主要用怪物说明接口的用法: 怪物有很多种, 按地域分:有的在天上飞,有的在地上跑,有的在水里游 按攻击方式分:有的能近...
  • Java中接口可以继承多个接口

    千次阅读 2017-11-09 10:40:13
    接口是常量值和方法定义的集合。接口是一种特殊的抽象类。 一.我们回忆下接口与抽象类的区别: abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制。...实现接口的一定要实现
  • 个接口多个实现类的处理方式

    千次阅读 2019-11-12 14:54:39
    在某些特殊业务中,为了方便, 所以采用一个接口多个实现类,但是如果不指定注入的实现类的话,就会造成启动报错: *************************** APPLICATION FAILED TO START *************************** ...
  • 一、简单例子:1.直接new一实例,这样肯定知道用的哪个实例2....举例子:A接口,A1,A2,A3实现A接口,有一eat方法,A1:吃饭,A2:吃鱼,A3:吃肉需要得到"吃肉",那么Aa=newA3();需要得到"吃饭",那...
  • java一个接口拥有多个实现类,调用指定实现
  • 如题所述,当一个接口多个子类实现时,Spring框架怎样从容器中正确取出我们想要的实例呢? (定义了CommonService接口,同时有个两个子类实现了这个接口,同时两个实现类上都加了@Service注解,表明在项目启动...
  • 个接口多个实现类,如何指定特定实现类进行调用示例解决方法 在写程序的时候经常会遇到 写一个接口多个实现类,那么在调用的时候是如何去确定调用的是哪个实现类呢?接下来将为你介绍几种方式: 示例 总接口 ...
  • 个接口难免会有多个实现类,不同的实现类有各自的需求,如何在项目中实现根据不同项目,自由切换实现类呢? 废话不多说,直接上代码,文末有源码,直接测试 1.接口代码 package com.cj.interfaces; public ...
  • 最近写了前台一个管理模块,后来也是我来写,采用四层架构,在定义接口时,基本是一个接口对应一个实现类,使用@Autowired注解,但我想如果有多个实现类,如何注解,来梳理一下 举例说明: 1、接口:IAnimal 2、实现...
  • 根据前台返回的不同参数,选择一个接口不同的实现类来实现不同业务逻辑,我们用到了proxy代理类。 首先是spring.xml 配置文件 如下:(proxy 代理类 ××ServiceImpl实现类) 代理类代码 ...
  • spring注解识别一个接口多个实现类方法,在引用类中匹配到正确的实现类接口如下:public interface Filter { public String doFilter(String param); }接口实现类:public class TimeFilter implements Filter {...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,811,348
精华内容 1,124,539
关键字:

实现多个接口

友情链接: mash网格划分.zip