接口和抽象类的区别

1.什么是抽象类,抽象类和普通类的区别?

    只要满足被abstract类修饰的类就是一个抽象类。

    .也就是说,抽象类可以没有抽象方法,可以没有任何一个抽象方法。

    一个类要是有抽象方法那么这个类就必须是一个抽象类,即被abstract修饰。

    也就是说抽象类只是比普通类多了一个abstract关键字,即不能创建对象,还有写不写抽象方法的选择,成员变量,构造方法等等它都可以有。

    但是大多数情况下抽象类是都会有抽象方法的,比如JDK中的AbstractMap,抽象类设计主要是为了把共性的东西让子类去继承(成员变量和成员方法),把包含子类特性的方法定义成抽象的,让子类自己去发挥。

2.什么是接口?

    广义的接口:对外提供规则的就是接口

    java中的接口就是interface修饰的一个结构。

    接口中的成员变量的缺省属性是static final

    JDK1.8之前接口中的方法必须是抽象方法,即没有方法体,JDK1.8中的接口可以有default修饰的方法,有方法体。

     default修饰的方法有什么特点?

      1.因为接口不能被实例化,所以default方法跟普通方法没有什么区别,只是普通方法是父类提供给子类去直接使用的,默认方法是接口的方法是提供给实现它的类去使用的。

     2.如果一个类实现了俩个接口,俩个接口中都有相同名称的default方法,那么编辑器就会提示你俩个接口中的默认方法重复了,推荐你去重写自己的方法,或者在重写方法中用  接口名.super.方法名()指定调用哪一个

    3.如果一个类实现了多个同名的default方法的接口的同时,又继承了另一个有同名方法的类,那么编辑器就不会报错了,一定会调用类中的同名方法,因为继承的优先级高,简单来理解的话,我们在写代码时候也是先写extends再写implements的,不然编辑器就会报错。

3.抽象类和接口的区别

    1.抽象类只能被类继承,接口既可以被接口继承,也能被类实现。

    2抽象类中成员变量想定义什么样就定义成什么样,.接口中的成员变量只能是staic final的。

    3.抽象类可以有抽象方法和成员方法和构造方法,接口中只能有抽象方法或者default方法。

    4.从设计思想上来说,抽象类是就是用来被继承的,主要是提供共性的功能,强调这个类是什么,接口中主要是提供扩展功能,强调这个类又多了一些功能,举一个例子,比如有一个抽象类是动物类,猫类如果实现了动物类,那么就有了动物的共性功能,如果有一个接口是和人聊天的接口,里面有一个方法是和人聊天的抽象方法,如果猫类实现了这个接口,即重写了和人聊天的方法,等于说猫学会了和人聊天(扩展)。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值