013_面向对象_抽象类和接口

Posted lydbky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了013_面向对象_抽象类和接口相关的知识,希望对你有一定的参考价值。

1.抽象类(abstract)

  (1)特点

    ①方法只有声明没有实现时,该方法就是抽象方法,抽象方法必须定义到抽象类中,该类也必须被abstract修饰

    ②抽象类不可以被实例化,因为调用抽象方法没有意义。
    ③抽象类必须有子类覆盖所有的抽象方法,该子类才可以实例化,否则,这个子类还是抽象类

  (2)常见问题

    ①抽象类中有构造函数吗?

      有,用来给子类对象初始化
    ②抽象类可以不定义抽象方法吗?
      可以。目的是不让该类创建对象,通常这个类中的方法有方法体,却没有内容
    ③抽象关键字不可以和哪些关键字共存?
      private,static,final
    ④抽象类和一般类的异同
      相同:都是用来描述事物的,都在内部定义了成员
      异同:a.一般类中有足够的信息描述事物,抽象类描述事物的信息可能不足
         b.一般类中不能定义抽象方法抽象类可以定义抽象方法,同时也可以定义非抽象方法
         c.一般类可以被实例化,抽象类不可以被实例化

2.接口(interface)

  接口,在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法(http://www.runoob.com/java/java-interfaces.html)

  (1)固定的修饰符

    ①全局常量:public static final

    ②抽象方法:public abstract

  (2)特点

    ①一个类可以实现多个接口,而且在继承另一个类的同时,还可以实现多个接口。

    ②接口的出现避免了单继承的局限性,接口与接口之间是继承关系,而且接口可以多继承。

  (3)抽象类和接口的异同

    ①相同点:

       都是不断向上抽取而来的
    ②不同点:
      a.抽象类需要继承,而且只能单继承
       接口需要被实现,而且可以多实现

      b.抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法
       接口中只能定义抽象方法,必须由子类去实现

      c.抽象类的继承,是 is 关系,在定义该体系的基本共性内容。
       接口的实现是 like 关系,在定义体系额外功能。

  (4)接口的应用:

    接口类型的引用,用于接受(指向)接口的子类对象。

  

以上是关于013_面向对象_抽象类和接口的主要内容,如果未能解决你的问题,请参考以下文章

Java面向对象_类和对象

Java面试_君哥讲解笔记_java面向对象_3抽象类和接口有什么区别接口是否可以继承接口private修饰的方法可以通过反射访问,那么private的意义是什么_ java类的初始化/执行顺序

Java面向对象(14)_抽象类和抽象方法

Java千百问_05面向对象(006)_is-a,has-a,like-a是什么

面向对象_多态_抽象类_接口

Python面向对象 | 抽象类和接口类