精华内容
下载资源
问答
  • 而抽象在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象一个典型应用,假设某个项目的所有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个方面逐一去比较回答,接着从第三者继承的角度的回答,特别是最后用了一个典型的例子来展现自己深厚的技术功底。

    展开全文
  • 一个类可以实现多个接口,接口可以继承多个接口 F 一个类只能继承一个类,java继承多个类时编译时就不通过 为什么java支持 一个类实现多个接口;但是只能继承一个类 从上诉例子中可以看出,如果子类F...

    接口
    接口中的抽象方法只能是 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就不知道选哪一个父类的方法进行重写了。

    展开全文
  • 继承会产生钻石问题(菱形继承) 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面试题与答案】整理推荐

     

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

    java 不支持多继承,但类可以实现多个接口,间接的实现多继承,也可以通过内部类。
    参考代码:MultiExtendsTest

    // 测试间接的实现多继承
    public class MultiExtendsTest extends D implements A, B, C {
    
    	@Override
    	public void work() {
    		// TODO Auto-generated method stub
    
    	}
    
    	@Override
    	public void sleep() {
    		// TODO Auto-generated method stub
    
    	}
    
    	@Override
    	public void eat() {
    		// TODO Auto-generated method stub
    
    	}
    	
    	public static void main(String[] args) {
    		MultiExtendsTest m = new MultiExtendsTest();
    		m.show();
    	}
    
    }
    
    interface A {
    	public void eat();
    }
    
    interface B {
    	public void sleep();
    }
    
    interface C {
    	public void work();
    }
    
    class D{
    	public void show(){
    		System.out.println("===show===");
    	}
    }
    
    
    展开全文
  • 一个类可以只能继承一个抽象,为什么接口可以多继承接口。谢谢大神帮我回答
  • java 一个接口可以继承多个接口吗

    万次阅读 2018-06-19 14:36:33
    Interface3 Extends Interface0, Interface1, interface……不允许多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,A如何决定该继承一个呢?但接口不存在这样的问题,接口全都是抽象方法继承....
  • 之前在 intellij idea常用快捷键 里面说到过,Ctrl+o快捷键,可以快速打开当前的基类(父类),父类比较的时候只能一层一层的打开,不太直观,使用下面的方法可以非常直观的展示出一个类的所有父类关系图。...
  • 在java中 一个类中不能继承多个接口,但是可以通过一个接口继承多个接口来实现。具体代码如下public interface LanguageBeharvior { public void language(); }public interface SpeakBeharvior { public void ...
  • Python中多继承

    千次阅读 2019-05-21 18:02:49
    文章目录Python中的多继承多继承Python多继承实现多继承的缺点Mixin*思路1**思路2**思路3**思路4*Mixin Python中的多继承 Python2.2之前是没有共同的祖先的,之后,引入object,它是所有的共同祖先...
  • 一个类可以继承一个普通继承它的成员变量和方法;也可同时继承一个接口,继承接口的方法并完成定义。有一个神奇的魔法:同一种对象,都是IAct对象,调用同一种方法Act() 。但是执行的情况却完全不一样。...
  • Python中的继承、多层继承和多继承 ...继承的语法为在类名后的小括号()中写入要继承的父类名,如果要继承多个类则中间用逗号分隔。 class Electrical(object): def __init__(self, name): self....
  • java中定义一个类可以同时继承两个  分享| 2013-09-18 17:12yfjmhe | 浏览 19117 次  继承 这句话对还是错?为什么? 专业回答 DM19890110 2013-09-18 17:58 这句话要看怎么理解...
  • 1、接口可以继承接口,抽象可以继承接口,但可以实现接口。 2、抽象类可以继承实体。...4、一个接口可以继承多个接口. interface C extends A, B {}是可以的. 一个类可以实现多个接口: class ...
  • C#-同时继承多个类

    万次阅读 2018-12-07 16:14:50
    面试题: using UnityEngine; public class Test : MonoBehaviour { // Use this for initialization void Start() ... IMyInterface my1 = new MyClass1();... IMyInterface my2 = new MyCl...
  • Kotlin-30-继承多个父类

    千次阅读 2019-12-30 14:55:16
    Java中的只能继承一个父类,是无法实现继承多个父类,但是一个类可以实现多个接口。 Java中的接口是无法给函数添加函数体的 abstract class TestFather { public abstract void funA(); } interface Test1 { ...
  • //一个子类可以同时继承抽象和实现接口 //接口 interface A{ public static final String FLAG="天河学院"; public abstract void print(); public abstract String getInfo(); } //抽象 ...
  • java接口可以继承多个接口

    千次阅读 2019-03-07 19:11:54
    接口是常量值和方法定义的集合。接口是一种特殊的抽象。...不允许多重继承的主要原因是,如果A同时继承B和C,而b和c同时有一个D方法,A如何决定该继承一个呢? 但接口不存在这样的问题,接口全都是抽象方法...
  • 一个接口能继承一个接口,和之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。 下面的Sports接口被Hockey和Football接口继承: // 文件名: Sports.java public interfa
  • C++中多继承

    万次阅读 多人点赞 2015-07-19 23:07:43
    在c++中一个类可以多个基类中派生(即可以多个父类),这就是多继承。多继承的方式主要有两种:1. 简单版本 C会同时拥有A和B的特性(属性和方法,也就是两个的所有成员)。这种方式很简单这里就不多说,...
  • C++ (多继承和虚继承)

    万次阅读 2018-07-29 16:00:46
    一个类多个基类,这样的继承关系称为多继承; b. 多继承声明语法: class 派生类名: 访问控制符 基类名1,访问控制符 基类名2 { 数据成员和成员函数声明; } class A: public B,public c { } 图示: c. 多个...
  • java中接口是否可以继承多个接口?

    千次阅读 2018-11-06 20:04:52
    接口是常量值和方法定义的集合。接口是种特殊的抽象。 java是单继承的。classB Extends classA ...java接口可以多继承。Interface3 Extends Interface0, Interface1, interface…… 不...
  • 但是你可以像下面这样实现继承多个类 class A extends B class C extends A 这样C就同时继承了B和A两个在C++看来,这个多继承就好解决多了class A{public:virtual void foo(){printf("A")}};c...
  • 还是说如果将自己创建的类继承一个类的话 那这个自己创建的就不会再继承Object 了? 有点晕了 今天遇到一题母说 java中最多可以继承几个 填空题的,差点写了2了
  • C++——多继承

    千次阅读 2018-07-11 19:29:28
      如果一个派生多个基类继承, 则称为多继承。 多继承的声明: class 派生类名:访问控制 基类名1, 访问控制 基类名2, ... { 成员列表 } 注意: 多个基类的派生的构造函数执行的顺序与单继承的...
  • java中一个类不能直接继承两个比如说这样: class A extends B,C 不能这样写,因为java不支持多继承, 但是你可以像下面这样实现继承多个类 class A extends B class C extends A 这样C就同时继承了B和A两个
  • Pycharm 查看一个类继承关系图

    千次阅读 2018-09-07 22:32:46
    Pycharm 查看一个类继承关系图 查看DRF框架的APIView继承关系 查看DRF框架的GenericAPIView所在.py模块的所有类继承关系 Pycharm 查看一个类继承关系图 在我们开发过程中: 无论是使用的开发...
  • Java中接口可以继承多个接口

    千次阅读 2017-11-09 10:40:13
    接口是常量值和方法定义...接口是公开的,里面不能有私有的方法或变量,而抽象可以有私有方法或私有变量的; 接口里定义的变量只能是公共的静态的常量,抽象中的变量是普通变量; 实现接口的一定要实现接
  • IntelliJ IDEA使用教程 (总目录篇) 在 IntelliJ IDEA 中这个查看一个类也就是当前...可以很清楚明了的了解一个类的实现关系。diagram 英[ˈdaɪəgræm] 美[ˈdaɪəˌɡræm] n. 图表; 示意图; 图解; [数] 线图;...
  • Interface3 Extends Interface0, Interface1, interface……不允许多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,A如何决定该继承一个呢?但接口不存在这样的问题,接口全都是抽象方法继承...
  • 可以继承其他,但不能用extends。 可以实现某接口,但不能用implements。匿名内部,就是没有名字的内部。故没有构造器,必须调用基类的构造器。所以是继承基类的。匿名内部经常被用来覆盖基类的某些方法:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,651,673
精华内容 660,669
关键字:

一个类可以继承多个类吗