首页 > 试题广场 >

jdk1.8中,下面有关java 抽象类和接口的区别,说法错

[不定项选择题]
jdk1.8中,下面有关java 抽象类和接口的区别,说法错误的是?
  • 抽象类可以有构造方法,接口中不能有构造方法
  • 抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法
  • 一个类可以实现多个接口,但只能继承一个抽象类
  • 接口中可以有普通成员变量,抽象类中没有普通成员变量
抽象类
特点:
1.抽象类中可以构造方法
2.抽象类中可以存在普通属性,方法,静态属性和方法。
3.抽象类中可以存在抽象方法。
4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。
5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。
接口
1.在接口中只有方法的声明,没有方法体。
2.在接口中只有常量,因为定义的变量,在编译的时候都会默认加上
public static final 
3.在接口中的方法,永远都被public来修饰。
4.接口中没有构造方法,也不能实例化接口的对象。
5.接口可以实现多继承
6.接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法
7.则实现类定义为抽象类。
编辑于 2016-02-26 11:08:00 回复(32)
D接口中的普通成员变量是final型的
发表于 2020-02-24 21:50:19 回复(0)
C的选项意思是父类只能是抽象类??这表述有问题吧。
发表于 2017-05-09 16:12:03 回复(0)
严格来说应该说明JDK的版本
发表于 2016-04-01 07:37:31 回复(0)
java8中接口可以有default方法,所以B是错的,感谢 @__PureFrog的帮助 。
编辑于 2016-12-06 22:57:50 回复(18)
接口可以有default、static方法,所以B是错的。
interface A {
    abstract void a();
    static void s() {
    }
    default void d(){
       
    }
    void b();//默认用abstract修饰
    int a = 0;//默认用static final 修饰
}
编辑于 2017-02-14 19:44:14 回复(18)
1. 接口中不能有构造方法,抽象类中可以有。抽象类中构造方法作用:初始化抽象类的成员;为继承它的子类使用
2. 接口中方法默认是public abstract (只能是这两个关键字,或其中一个或都省略)
3. 接口中的变量默认是public static final(只能是这三个关键字,或其中两个/一个或都省略)

Ps : java中一个类只能继承一个类,但一个接口可以继承多个接口
发表于 2015-08-28 13:50:39 回复(2)
java8中接口可以定义静态方法可以有方法体
发表于 2016-05-03 13:15:37 回复(2)
答案:D
接口和抽象类中都可以有普通成员变量,但是接口中的成员变量必须是final类型的,抽象类的成员变量与普通类相同,无特殊规定
编辑于 2016-02-26 09:26:37 回复(3)
现在的Java 8 中可以允许接口中定义默认方法、类方法。
发表于 2016-01-23 16:33:17 回复(0)
这个题出的没意义,在java 8中支持default method,但是其他的java版本不支持,这种题最好指明版本。
发表于 2016-08-02 14:50:22 回复(3)
    1.抽象类可以有构造方法,接口中不能有构造方法。
    2.抽象类中可以有普通成员变量,接口中没有普通成员变量
    3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
    4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然
    eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
    5. 抽象类中可以包含静态方法,接口中不能包含静态方法
    6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
    7. 一个类可以实现多个接口,但只能继承一个抽象类。
    下面接着再说说两者在应用上的区别:
    接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实现方面发挥作用,可以实现代码的重用,
发表于 2016-01-26 17:35:58 回复(3)
JDK1.8新特性:
  • Lambda表达式
  • 函数式接口
  • 方法引用和构造器调用
  • Stream API
  • 接口中的默认方法和静态方法
  • 新时间日期API
对接口进行了增强:可以有  default  / static  修饰的方法
发表于 2020-02-13 11:38:31 回复(1)
B选项,JDK1.8之后,接口里也可以有普通方法。
public interface Haha {
    default void haha()    {
        System.out.println("接口里也能有普通方法的,我去");
    }
}

发表于 2018-03-01 16:08:12 回复(3)
首先,接口是一种高度抽象的“模板”,而接口中的属性也就是模板中的成员,就应当是所有实现模板的实现雷达共有特性,所以它是public static 的,是所有实现类的共有的,加入可以是非static的话,因一个类可以继承多个接口,出现重名的变量,如何区分呢?
 


发表于 2015-07-24 11:35:53 回复(1)
接口和抽象类之间的区别
第一:从接口和抽象类【设计目的】分析

    接口类似于一种规范用来约束类的行为,对于实现该接口的各个类其共同行为的内部实现不加以限制

    抽象类的设计目的主要是代码复用

    各个子类中具有共同行为但其实现相同但将其设计为带有具体实现的方法放在抽象类中

    各个子类中具有共同行为但其实现不同将该行为设计为抽象方法放在抽象类中

第二: 从各自在Java中的【使用情况】来看

①Java支持单继承多实现,所以一个类仅能继承一个抽象类但可以实现多个接口 【单继承多实现】

②接口中成员变量默认修饰符是public static final而抽象类中的成员变量可以是可种类型【成员变量修饰符】

③接口中不能含有静态代码块以及静态方法,抽象类可以有静态代码块和静态方法【静态代码块和静态方法】 jdk1.8以后接口允许存在静态方法和默认的实现方法(修饰符是default) jdk1.9以后接口允许使用private修饰方法实现代码封装

④接口中只包含方法的声明没有方法的实现,抽象类中既可以由抽象方法也可以有具体实现的方法【方法是否实现】
发表于 2021-07-09 21:13:44 回复(0)
接口中可以有default默认方法
发表于 2016-04-10 14:25:00 回复(0)
D.接口可以理解为一种特殊类 里面全部是由全局常量和公共的抽象方法所组成

抽象类是包含类抽象方法的类 
发表于 2015-06-22 10:12:32 回复(0)
D:抽象类中可以有普通成员变量,接口中成员变量是静态常量
发表于 2015-01-03 22:30:12 回复(0)
b是怎么回事?接口里面所有方法都是抽象的有错误吗?
发表于 2022-02-20 00:22:28 回复(1)