2021-09-28

链接:抽象类和接口的区别,一下说法错误的是_360公司笔试题_牛客网
来源:牛客网
 

抽象类和接口的区别,以下说法错误的是ACD

  • A.接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的。
  • B.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface,实现多重继承。接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用。
  • C.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是 static final的,不过在 interface中一般不定义数据成员),所有的成员方法默认都是 public abstract 类型的。
  • D.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"has-a"关系,interface表示的是"is-a"关系。
  • 链接:抽象类和接口的区别,一下说法错误的是_360公司笔试题_牛客网
    来源:牛客网
     

    抽象类:在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为抽象方法,抽象方法只有方法的声明,没有方法体。抽象类的特点:

    a、抽象类不能被实例化只能被继承;

    b、包含抽象方法的一定是抽象类,但是抽象类不一定含有抽象方法;

    c、抽象类中的抽象方法的修饰符只能为public或者protected,默认为public;

    d、一个子类继承一个抽象类,则子类必须实现父类抽象方法,否则子类也必须定义为抽象类;

    e、抽象类可以包含属性、方法、构造方法,但是构造方法不能用于实例化,主要用途是被子类调用。

    接口:Java中接口使用interface关键字修饰,特点为:

    a、接口可以包含变量、方法;变量被隐士指定为public static final,方法被隐士指定为public abstract(JDK1.8之前);

    b、接口支持多继承,即一个接口可以extends多个接口,间接的解决了Java中类的单继承问题;

    c、一个类可以实现多个接口;

    d、JDK1.8中对接口增加了新的特性:

            (1)、默认方法(default method):JDK 1.8允许给接口添加非抽象的方法实现,但必须使用default关键字修饰;定义了default的方法可以不被实现子类所实现,但只能被实现子类的对象调用;如果子类实现了多个接口,并且这些接口包含一样的默认方法,则子类必须重写默认方法;

            (2)、静态方法(static method):JDK 1.8中允许使用static关键字修饰一个方法,并提供实现,称为接口静态方法。接口静态方法只能通过接口调用(接口名.静态方法名)。

            注意:jdk1.9是允许接口中出现private修饰的默认方法和静态方法

    解析:

    A:jdk1.9是允许接口中出现private修饰的默认方法和静态方法,A错误;抽象类可以有私有的变量和方法。

    B:正确

    C:抽象类可以有抽象和非抽象的方法;jdk1.8接口中可以有默认方法和静态方法,C错误。

    D:强调继承关系,is-a,如果A is-a B,那么B就是A的父类;

            代表组合关系,like-a,接口,如果A like a B,那么B就是A的接口。 ;

            强调从属关系,has-a,如果A has a B,那么B就是A的组成部分。

    D项错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值