java接口和抽象类

短命女 2022-06-09 14:22 406阅读 0赞

1、抽象类最大的特征就是在普通类的基础上追加了抽象方法,而事实上抽象类定义里面也存在有若干的问题
。将抽象方法和普通方法写在一起有些乱
。抽象类本身会存在单继承的局限

2、抽象类和接口最大的区别在于:抽象子类只允许继承一个抽象类,而接口的子类可以同时实现多个接口,避免了单继承的局限。接口本质上来讲属于一个特殊的类,接口的组成只有2种结构:全局常量、抽象方法,而接口的定义要使用 interface关键字。

3、可是接口和抽象类一样,由于里面都存在抽象方法,所以肯定无法直接使用关键字new实例化,所以接口使用原则:
。接口一定要有子类,子类要使用implements可以实现多个父接口
。接口的子类一定要覆写接口中的全部抽象方法
。接口的对象实例化可以依靠子类对象的向上转型完成,于是不同的子类对于同一个抽象方法会有不同的实现

  1. //使用接口
  2. interface IMessage { // 使用I代表这是一个接口
  3. public static final String INFO = "test" ;
  4. public abstract void print() ;
  5. }
  6. class MessageImpl implements IMessage {
  7. public void print() {
  8. System.out.println("Hello World !") ;
  9. System.out.println(INFO) ;
  10. }
  11. }
  12. public class TestDemo {
  13. public static void main(String args[]) {
  14. IMessage msg = new MessageImpl() ;
  15. msg.print() ;
  16. }
  17. }

4、既然接口中全部都是有抽象方法和全局常量所组成,所以以下两种定义效果一样:

  1. interface IMessage {
  2. public static final String INFO = "test" ;
  3. public abstract void print() ;
  4. }
  5. interface IMessage {
  6. String INFO = "test" ;
  7. public void print() ;

5、接口中的全部的访问权限都是public

ps:
。说到了接口和抽象类,那么就必须注意:一个抽象类可以同时实现多个接口,但是反过来,一个接口不允许继抽象类。
。虽然一个接口无法去继承一个抽象类,但是,一个接口缺可以使用extends继承多个父接口
。在实际开发中接口有三大核心意义:定义不同层间的操作标准、表示一种能力、将远程方法视图暴露给客户端。

6、接口和抽象类的的区别(面试经常问的):
。关键字不同:抽象类(abstract class) 接口(interface)

。 组成不用:抽象类(属性,常量,构造,普通方法,抽象方法) 接口(全局常量,抽象方法)

。 权限不同:抽象类(可以使用各种权限) 接口(只能是public)

。子类实现:抽象类(extends) 接口(interface)

。关系:抽象类(可以实现多个接口) 接口(接口不允许继承抽象类,但是可以继承多个父接口)

。使用:都需要定义有子类,子类一定要覆写所有抽象方法,并且依靠子类对象像上转型实现抽象类或者接口的对象实例化操作

。限制:抽象类(一个子类只能继承一个抽象类) 接口(一个子类可以实现多个接口)

。抽象类里可以没有抽象方法

。如果一个类里有抽象方法,那么这个类只能是抽象类

当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。

发表评论

表情:
评论列表 (有 0 条评论,406人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java-接口抽象

    抽象类写法及作用范围 随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更通用。 类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽

    相关 Java 抽象接口

    抽象类 一.抽象类的含义 当多个类中出现相同的功能,但是功能主体不一样,这时候可以进行向上抽取,只抽取功能定义,而不抽取功能主题,并将这些功能定义封装进一个类,,

    相关 JAVA抽象接口

    本文是本人学习网络上各位大牛的总结。 一、抽象类 1. 在面向对象领域由于抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能实例化的。 2. 抽

    相关 Java抽象接口

    抽象类是一种功能不全的类,接口是一个抽象方法声明和静态不能被修改的数据的集合,两者都不能被实例化。从某种意义上说,接口是一种特殊形式的抽象类,在Java语言中,抽象类表示一种继

    相关 java接口抽象

    1、抽象类最大的特征就是在普通类的基础上追加了抽象方法,而事实上抽象类定义里面也存在有若干的问题 。将抽象方法和普通方法写在一起有些乱 。抽象类本身会存在单继承的局限

    相关 JAVA抽象接口

    抽象类: 定义一个类的时候,常常需要定义一些方法来描述该类的行为特征,但有时候这些方法的实现方式无法确定。 针对这种情况,Java允许在定义方法的时候可以不写方法体,不

    相关 Java抽象接口

    父类定义了子类中的共同行为,接口定义不同类的共同行为。 抽象类 抽象类不可 new 一个实例,可以包含抽象方法,没有实现,这些方法在子类中实现。 使用 abstrac