当前位置:   article > 正文

java抽象类与接口_java 接口和抽象

java 接口和抽象

目录

一、抽象类

1、抽象类的格式

2、抽象类与普通类的区别

3、抽象方法与普通方法的区别

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

二、接口

1、接口的定义和使用

2、接口特性

3、面向接口编程

4、面向接口编程的优点

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

6、接口和类之间的关系:

7、接口与接口的关系:

三、接口补充

1、JDK7以前只能定义抽象方法

2、JDK8以后接口新增的方法

3、JDK9新增的方法


一、抽象类

        抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情。

        对于一个父类,如果它的某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求来进行不同的实现,那么就可以将这个方法声明为abstract方法,此时这个类也就成为abstract类了。

1、抽象类的格式

  1. public abstract class 类名{} //抽象类
  2. 访问修饰符 abstract 返回值类型 方法名 (参数列表) //抽象方法

注意:继承抽象要么重写抽象类中所有的抽象方法,要么是抽象类

2、抽象类与普通类的区别

 抽象类要用abstract修饰

 普通类可以实例化,抽象类不能实例化

如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。  

3、抽象方法与普通方法的区别

普通方法必须要有方法体,抽象方法不能有方法体(大括号也没有)

抽象方法要用abstract修饰

抽象方法必须存在于抽象类中

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

抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类

如果子类没有实现父类的所有抽象方法,子类必须被定义为抽象类

没有抽象构造方法,也没有抽象静态方法

抽象类中可以有非抽象的构造方法,创建子类的实例时可以调用

二、接口

接口是一种规范或标准,它们可以约束类的行为,是一些方法特征的集合,但是没有方法的实现。

1、接口的定义和使用

接口用关键字interface来定义、接口不能实例化

语法:

  1. 定义接口的语法:
  2. [访问修饰符] interface 接口名 extends 父接口1,父接口2,…{
  3. //常量定义
  4. //方法定义
  5. }

接口和类之间是实现关系,通过implements关键字表示

语法:

  1. 类实现接口的语法:
  2. [访问修饰符] class 类名 extends 父类名 implements 接口1,接口2,{
  3. //类成员
  4. }
  5. 实现类还可以在继承一个类的同时实现多个接口
  6. public class 类名 extends 父类 implements 接口1,接口2....{}

2、接口特性

1、接口的命名规则与类相同。如果修饰符是public,则该接口在整个项目中可见;如果省略修饰符,则该接口只在当前包可见。

2、接口中可以定义常量,不能定义变量。接口中的属性都会自动用public static final 修饰,即接口中的属性都是全局静态常量。

3、接口中方法自动用public  abstract修饰,接口中所有方法都是抽象方法。

4、接口不能实例化,接口中不能有构造方法。

5、接口直接可以通过extends实现继承关系,一个接口可以继承多个接口,但是接口不能继承类。

6、接口的实现类必须实现接口的全部方法,否则必须定义为抽象类。

3、面向接口编程

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

接口体现了约定和实现相分离的原则

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

4、面向接口编程的优点

1、降低代码间的耦合性

2、易于程序的扩展,提高了程序的可扩性性

3、提高了程序的可维护性

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

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

不同点:1、在抽象类中可以为部分方法提供默认实现,而接口中只能包含抽象方法 2、抽象类便于复用,接口便于代码维护 3、一个类只能继承一个直接的父类,但可以实现多个接口

6、接口和类之间的关系:

实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口

7、接口与接口的关系:

继承关系,可以单继承,也可以多继承

三、接口补充

1、JDK7以前只能定义抽象方法

2、JDK8以后接口新增的方法

1、允许在接口中定义默认方法,需要使用关键字default修饰

2、允许在接口中定义静态方法,需要用static修饰

作用:解决了接口升级的问题

接口中默认方法定义格式:

  1. 格式:public default 返回值类型 方法名(参数列表){}
  2. 例如:public default void show(){}

接口中默认的方法注意事项:

默认方法不是抽象方法,所以不强制被重写,但是需要重写的时候要去掉default关键字

public 可以省略,default不能省略

如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写

  1. //Inter接口
  2. public interface Inter {
  3. //抽象方法
  4. public abstract void method();
  5. //接口中的默认方法
  6. public default void show(){
  7. System.out.println("接口中的默认方法----show")
  8. }
  9. }
  1. //实现类重写的抽象方法
  2. //默认方法可以不用重写
  3. public class InterImpl implements Inter{
  4. @Override
  5. public void method(){
  6. }
  7. }

接口中静态方法的定义格式:

  1. 格式:public static 返回值类型 方法名(参数列表){}
  2. 例子:public static void show (){}

注意:

静态方法只能通过接口名调用,不能通过实现类或者对象名调用

public 可以省略,static 不能省略

  1. //Inter接口
  2. public interface Inter {
  3. //抽象方法
  4. public abstract void method();
  5. //接口中的默认方法
  6. public default void show(){
  7. System.out.println("接口中的默认方法----show")
  8. }
  9. //静态方法1
  10. public static void show1(){
  11. System.out.println("show1")
  12. }
  13. //静态方法2
  14. public static void show1(){
  15. System.out.println("show2")
  16. }
  17. }

3、JDK9新增的方法

接口中私有方法的定义

  1. 格式1private 返回值类型 方法名(参数列表){}
  2. 例如: private void show(){}
  3. 格式2private static 返回值类型 方法名(参数列表){}
  4. 例如: private static void show(){}
  1. //普通的私有方法,是给默认方法服务的
  2. private void show3(){
  3. System.out.println("show3")
  4. }
  5. //静态的私有方法,是给静态方法服务的
  6. private static void show1(){
  7. System.out.println("show4")
  8. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/180515
推荐阅读
相关标签
  

闽ICP备14008679号