精华内容
下载资源
问答
  • 2021-03-04 04:55:52

    不一定,关键要看子类是否是抽象类。

    如果子类是非抽象类,则必须实现接口中的所有方法;

    如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在!

    1、抽象类定义

    抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。抽象类是 不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。

    2、抽象类特点

    1)抽象类不能实例化。

    2)抽象类可以包含抽象方法和抽象访问器。

    3)不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承。

    4)从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实际实现。

    3、与具体类的比较

    1)抽象类不能直接实例化,并且对抽象类使用 new 运算符会导致编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。

    2)允许(但不要求)抽象类包含抽象成员。

    3)抽象类不能被密封。

    4、与接口的比较

    1)相同点

    a、不能实例化;

    b、包含未实现的方法声明;

    c、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)

    2)不同点

    a、类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。

    b、抽象类当中可以存在非抽象的方法,可接口不能,且它里面的方法只是一个声明必须用public来修饰没有具体实现的方法。

    c、抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static final)。

    d、抽象类是对象的抽象,然而接口是一种行为规范。

    更多相关内容
  • java中之间能够实现单继承,即就是说一个类只能有一个父类,但允许多层继承,即就是一个类一个父类,该父类还可以有自己的一个父类。举个例子:假如A能够继承B和C,但当B,C中有相同的方法时,让A来调用,...

    匿名用户

    1级

    2019-04-14 回答

    A选项,对。java中类之间只能够实现单继承,即就是说一个类只能有一个父类,但允许多层继承,即就是一个类有一个父类,该父类还可以有自己的一个父类。举个例子:假如A能够继承类B和C,但当B,C中有相同的方法时,让A来调用,那么,A到底调用的父类中谁的方法呢?所以,java中类只能够实现单继承。

    但,类对于接口的话,类可以实现多个接口,即使不同接口有相同的抽象方法,子类默认也只会实现一个。

    B选项,对。抽象类可以没有抽象方法。但是有抽象方法的类一定是抽象类。

    C选项,不对。不对是因为前半句,实现抽象类和接口的如果是非抽象类的话,该非抽象类就必须实现其中所有的抽象方法,而不是所有方法,因为抽象类还可以有其他方法体跟实现。

    但假如实现抽象类和接口的是抽象类的话,那么抽象类就可以不用实现所有方法(所有方法包括父类或接口的所有抽象方法)(意思就是,该抽象类需要哪个抽象方法了就去实现,不需要了就不用去实现)。

    后半句正确,接口和抽象类中的抽象方法只有声明(即定义方法)不能有实现,这些抽象方法存在目的是让子类重写。

    因为接口中只能定义抽象方法,故而C选项说的接口中的方法都不能被实现,是对的。

    但抽象类可以有非抽象的方法和其方法的具体的方法,比如抽象类的构造方法(只是该构造方法不能被new实例化)。

    D选项,对。解释下D选项,接口中需要定义成员变量时,该成员变量必须定义为常量,然而定义常量那就必须用final来修饰,再者,该常量对于实现接口的所有实现类只能有一份,故而必须用静态的static来修饰,再加上接口必须要具体类来实现才有意义,所以必须是public来修饰。并且,在定义该成员变量时必须进行直接赋初始值!如:public static final int age = 10;而不是像只由final修饰的成员变量那样,即可以直接赋值,也可以在构造方法里面赋值。同时,既然被final修饰了,那么该变量已经成为最终变量了,那么该值当然是不可变的,也是不可以被重新定义的了。

    E选项,对。接口必须要具体类来实现才有意义,所以必须是用public来修饰接口中的抽象方法的,同时,省略不写public的时候,默认还是public修饰符。

    同时,实现接口的子类,在定义重写子类方法的访问级别不能低于父类相应方法的访问级别。

    展开全文
  • 2.接口之间是多实现的,一个类可以实现多个接口 3.接口接口之间是多继承的 详细解释: 一、一个类的直接父类只有一个,但可以实现多个接口: public class MyInterfaceImpl implements MyInterfaceA,...

    类、接口的三种关系:

    1.类与类之间是单继承的,直接父类只有一个

    2.类与接口之间是多实现的,一个类可以实现多个接口

    3.接口与接口之间是多继承的

    详细解释:

    一、一个类的直接父类只有一个,但可以实现多个接口:

    public class MyInterfaceImpl implements MyInterfaceA,MyInterfaceB{

    //覆盖重写所有抽象方法

    }

    注意事项:

    1.接口是没有静态代码块和构造方法的

    2.如果实现类所实现的多个接口中,存在重复的抽象方法,那么只需要覆盖重写一次即可

    3.如果实现类没有覆盖重写所有抽象方法,那么实现类必须是一个抽象类

    4.如果实现类的多个接口中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写

    5.一个类如果直接父类当中的方法和接口当中的默认方法产生了冲突,优先用父类当中的方法

    二、接口之间的多继承

    public interface MyInterface extends MyInterfaceA,MyInterfaceB{

    }

    注意事项:

    1.多个父接口当中的抽象方法可以重复

    2.多个父接口当中的默认方法如果重复,那么子接口必须进行默认方法的覆盖重写,而且带着default关键字

    补充:

    接口当中的四种方法:抽象方法,默认方法,静态方法,私有方法

    接口当中还可以拥有常量

     

    展开全文
  • 多继承会产生钻石问题(菱形继承) 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允许实现个接口

    千次阅读 2021-02-12 10:07:08
    java不允许多重继承,也就是说一个子类只能有一个父类,SonextendsFatherA,FatherB是错误的为了弥补这点不足,java允许实现多个接口接口就是给出一些没有内容的方法,类似于C++中的虚。到具体用的时候再由用的...
  • 一个接口有多个实现方法具体调用

    千次阅读 2020-01-06 18:08:26
    1.如果这个接口下的实现类我们都要遍历调用 可以在impl中: //DimensionDetailService为接口 @Autowired privat Map<String,DimensionDetailService> map; //然后就可以遍历调用啦 map.values()....
  • 定义一个接口,并定义相应的来实现实现接口中的方法 */ public interface Circle {//定义接口 double PI = 3.1415;// 定义常量 void setRadius(double radius);// 定义抽象方法 double area();// 定义抽象...
  • 在java中,接口是一切实现方法的来源,任何实现都离开不了接口,那么,一个标准的java接口写法是怎样的呢?下面,就让小编带你一起了解一下吧。(一)接口1、什么是接口接口就是一些方法特征的集合。一些功能的定义。...
  • 不一定,关键要看子类是否是抽象 如果子类是非抽象,则必须实现接口中的所有方法; 如果子类是抽象,则可以不实现接口中的所有方法,因为抽象允许有抽象方法的存在!
  • 难免被人为构造恶意请求攻击我们的系统,相信大家都或多或少都遇到过短信验证码被刷、疯狂留言灌水、数据被恶意爬取等问题,这种直接抓接口然后写循环调用的行为门槛极低,本文重点提供种提高安全门槛的方法供...
  • 接口接口实现类接口与抽象

    千次阅读 2019-02-07 16:34:56
    Java不支持多重继承,即一个子类只允许拥有一个父类。为了弥补这个不足,Java中的接口可以实现多重继承,一个类可以实现多个接口。 定义和实现接口 接口的定义包括接口声明和接口体两部分。接口体包括属性常量和...
  • 接口、抽象实现类

    千次阅读 2019-04-13 10:49:25
    2. 接口能被(抽象和具体)实现,区别在于抽象类实现接口,可以实现该接口的方法,也可以不实现该接口的方法;具体必须实现接口的所有方法 3. 接口可以被接口继承,但不允许继承 4. 之间可以相互继承...
  • java中,一个类实现某个接口,必须重写接口中的所有方法吗? 不一定,关键要看子类是否是抽象。 如果子类是非抽象,则必须实现接口中的所有方法;  如果子类是抽象,则可以不实现接口中的所有方法,因为抽象...
  • 无意间都到篇《走心的安卓工程师跳槽经验分享》,发现自己工作几年了,技术方面虽然有了飞跃的进步,可是不知道自己的技术到了什么...02抽象接口继承实现区别(参考Effective Java 接口 第18条:接口优于抽...
  • 1.结论 并不是所有的类实现接口后都必须实现接口的所有方法!2.特殊情况 当Java抽象实现某个接口后没必要实现所有的方法。3.注意点 当Java普通类实现接口后必须实现接口中的所有方法。4.原因为什么抽象不需要...
  • java中,一个类实现某个接口,必须重写接口中的所有方法吗???  java编程语言 专业回答 程秀娟 IT行业金牌讲师 北大青鸟中关村校区学术部 2015-09-29 10:30 不一定,关键要看子类是否是抽象...
  • 例子: 1. 直接new一个实例,这样肯定知道用的哪个实例 ...举个例子:A接口,A1,A2,A3实现A接口,有一个eat方法,A1:吃饭,A2:吃鱼,A3:吃肉 需要得到"吃肉",那么 A a = new A3(); 需要得到...
  • 一个java可以有多个父类吗?

    千次阅读 2021-02-26 21:02:03
    一个java不可以有多个父类,可以有1个父类。Java类只支持单继承,不支持多继承,所以可以有1个父类;接口可以多继承,所以接口可以有多个父类。Java类只可以有1个父类Java类只支持单继承,不支持多继承。也...
  • 4主要的map实现类介绍

    万次阅读 多人点赞 2019-07-31 18:36:57
    map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。其中这四者的区别如下(简单介绍): HashMap:我们最常用的Map,HashMap的值是没有顺序的,他是按照key的HashCode来...
  • Java中类实现接口

    万次阅读 2018-09-05 17:39:49
    Java中类实现接口实例: (方便查看) 设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,为了便于扩展采用面向接口的编程思想来实现,编写想应的以及主类,并且能够调用模拟器发出两种不同动物的...
  • java允许接口的多重继承吗

    千次阅读 2021-04-23 11:23:39
    Interface3 Extends Interface0, Interface1, interface……不允许类多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,A如何决定该继承那一个呢?但接口不存在这样的问题,接口全都是抽象方法继承...
  • 团队开发一个项目,由老大架了一个框架,遇到了DAO层不用写接口了,我也是用了2次才记住这个事的,因为自己一直都是习惯于写DAO层的实现类,所以,习惯性的还是写了个实现类。于是遇到错误了。找不到那个方法。问了...
  • 接口的几种实现方式

    万次阅读 2019-11-06 20:45:03
    1.通过一个类的继承实现 定义一个人类实现标准。 package aaa; //包 interface IPerson{ //接口标准 public abstract String eat(); //接口方法 public abstract String think(); //接口方法 } class ...
  • 首先看下面这段代码:(底下有热心网友更正,jdk1.8之后情况确实有点变化,等改天有空继续更) interface a{ void b(); } interface a1 extends a{ void b(); } interface a2 extends a{ void b(); } ...
  • Java 抽象 接口 继承 实现

    千次阅读 2016-07-23 17:21:14
    接口和抽象的概念不一样。接口是对动作的抽象,抽象是对根源的抽象。 抽象表示的是,这个对象是什么。接口表示的是,这个对象能做什么。...所以,在高级语言上,一个类只能继承一个类(抽象,jav
  • 使用JWT控制登录鉴权的项目如何实现单个账号只允许处登录的功能,也就是说在登录状态未失效的情况下,下次登录必须踢掉上次的登录。如果我们不做限制的话,单个账号多次登录就会产生多token,只要未过期就...
  • 接口存在多个实现类时的动态调用

    千次阅读 2017-08-23 17:57:16
    接口存在多实现时的动态调用版权声明:本文为博主...使用Spring特性实现接口多实现的动态调用org.springframework.beans及org.springframework.context这两包是spring IoC容器的基础, 其中重要的有BeanFac

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,072,935
精华内容 429,174
关键字:

一个类只允许实现一个接口