Java中的抽象类与接口

2023年5月8日08:09:34

目录

一、抽象类

1、抽象类的基本概念

2、抽象类的定义语法

 3、抽象类和普通类的区别

4、抽象方法

5、抽象方法和普通方法的区别

6、抽象类与抽象方法的使用

7、抽象类的局限性

二、接口

1、抽象类的定义语法

 2、接口的特性

3、理解接口

 4、面向接口编程

5、面向接口编程的优点

6、抽象类和接口的联系和区别


一、抽象类

1、抽象类的基本概念

        抽象思维,是人类思维达到高级阶段产生的一种能力,例如,当小孩子思维尚未成熟时,他们只能掌握具体概念,他们在学习代词“你、我、他”时往往遇到困难,因为代词具有较高的抽象性。
        抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情。
        对于一个父类,如果它的某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求来进行不同的实现,那么就可以将这个方法声明为abstract方法,此时这个类也就成为abstract类了。

2、抽象类的定义语法

访问修饰符 abstract class ClassName {   }

 3、抽象类和普通类的区别

  • 抽象类要用abstract修饰
  • 普通类可以实例化,抽象类不能实例化
  • 如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类

4、抽象方法

访问修饰符 abstract class ClassName {  
     访问修饰符 abstract 返回值类型  方法名(参数列表…);
}

5、抽象方法和普通方法的区别

  • 普通方法必须要有方法体,抽象方法不能有方法体(大括号也没有)
  • 抽象方法要用abstract修饰
  • 抽象方法必须存在于抽象类中

6、抽象类与抽象方法的使用

  • 抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类
  • 如果子类没有实现父类的所有抽象方法,子类必须被定义为抽象类
  • 没有抽象构造方法,也没有抽象静态方法
  • 抽象类中可以有非抽象的构造方法,创建子类的实例时可以调用

7、抽象类的局限性

        子类继承抽象类之后,必须重写父类的抽象方法,重写的方法有可能会是代码重复的情况,不符合代码复用的要求

二、接口

1、抽象类的定义语法

定义接口的语法:

[访问修饰符]  interface 接口名   extends 父接口1,父接口2,…{
                    //常量定义
                    //方法定义
}

类实现接口的语法: 

[访问修饰符]  class  类名  extends  父类名 implements  接口1,接口2,…{
                    //类成员
}

 2、接口的特性

  1. 接口的命名规则与类相同。如果修饰符是public,则该接口在整个项目中可见;如果省略修饰符,则该接口只在当前包可见。
  2. 接口中可以定义常量,不能定义变量。接口中的属性都会自动用public static final 修饰,即接口中的属性都是全局静态常量。
  3. 接口中方法自动用public  abstract修饰,接口中所有方法都是抽象方法
  4. 接口不能实例化,接口中不能有构造方法
  5. 接口直接可以通过extends实现继承关系,一个接口可以继承多个接口,但是接口不能继承类
  6. 接口的实现类必须实现接口的全部方法否则必须定义为抽象类

3、理解接口

接口表示一种约定

        生活中,我们使用的两相电源插座,规定了
        两个接头间的额定电压
        两个接头间的距离
        接头的形状

接口表示一种约定

 4、面向接口编程

  • 关心实现类有何能力,而不关心实现细节
  • 面向接口的约定而不考虑接口的具体实现

        面向接口编程就是先把客户的业务逻辑线提取出来,作为接口,业务具体实现通过该接口的实现类来完成。当客户需求变化时,只需编写该业务逻辑的新的实现类,替换该接口的实现类就可以完成需求,不需要改写现有代码,减少对系统的影响。

5、面向接口编程的优点

        接口体现了约定和实现相分离的原则
        面向接口编程就意味着:开发系统时,主体架构使用接口,接口构成系统的骨架,这样就可以通过更换实现接口的类来实现更换需求。

面向接口编程的优点:

  • 降低代码间的耦合性
  • 易于程序的扩展,提高了程序的可扩性性
  • 提高了程序的可维护性

6、抽象类和接口的联系和区别

相同点:

  • 代表系统的抽象层
  • 都不能被实例化
  • 都能包含抽象方法:用于描述系统提供的服务,不必提供具体实现

不同点:

  • 在抽象类中可以为部分方法提供默认实现,而接口中只能包含抽象方法
  • 抽象类便于复用,接口便于代码维护
  • 一个类只能继承一个直接的父类,但可以实现多个接口
  • 作者:jule_zhou
  • 原文链接:https://blog.csdn.net/jule_zhou/article/details/126117317
    更新时间:2023年5月8日08:09:34 ,共 1837 字。