接口和抽象类

一、接口

接口相当于对外的一种约定和标准,比如为什么有操作系统,操作系统能屏蔽软件的复杂性和硬件的简单性之间的差异,为软件提供统一的标准。

Java中,接口使用interface关键字来表示,比如我们可以定义这样一个接口:

1 package day04;
2 
3  
4 
5 public  interface Job {
6 
7     void writeWell();
8 
9 }

比如定义了Job接口,就可以在内部定义需要做的事情。接口的特征如下:

  • Interface接口是一个完全抽象的类,不会提供任何方法的实现,只会进行方法的定义。
  • 接口中只能使用两种访问修饰符,一种是public,表示它对整个项目可见;一种是default缺省值,它表示只具有包访问权限。
  • 接口只提供方法的定义,接口没有实现,但是接口可以被其他类实现。意思是接口的类需要提供方法实现接口,实现使用implements关键字表示,一个接口可以有多种实现。

Demo.java

 1 package day04;
 2 
 3  
 4 
 5 class YangWriteWell implements Job {
 6 
 7     @Override
 8 
 9     public void writeWell() {
10 
11         System.out.println("Yang write is vary well!");
12 
13     }
14 
15 }
16 
17  
18 
19 class GaoWriteWell implements Job {
20 
21     @Override
22 
23     public void writeWell() {
24 
25         System.out.println("Gao write is vary well!");
26 
27     }
28 
29 }

job.java

1 package day04;
2 
3  
4 
5 public  interface Job {
6 
7     void writeWell();
8 
9 }
  • 接口不能被实例化,所以接口不能有构造方法,定义构造方法会出错。
  • 接口的实现比如实现接口的全部方法,必须定义为抽象类

二、抽象类

抽象类是一种抽象能力弱于接口的类,在Java中使用abstract关键字表示。如果把接口形容为狗,那抽象类可以理解为毛发是白色、小体的品种,而实现类可以是具体的类比如牧羊、泰迪等。

 1 package day04;
 2 
 3  
 4 
 5 public interface Dog {
 6 
 7     void FurColor();
 8 
 9 }
10 
11  
12 
13 abstract class BlackDog implements Dog {
14 
15     public void FurColor() {
16 
17         System.out.println("Fur is black");
18 
19     }
20 
21  
22 
23     abstract void SmallBody();
24 
25 }

抽象类的特征如下:

  • 如果一个类中有抽象方法,那么这个类一定是抽象类,也就是用abstract修饰的方法一定是抽象方法,具有抽象方法的一定是抽象类。实现类只有具体方法的实现。
  • 抽象类中不一定有抽象方法,抽象类也能有具体的方法,这个根据实际情况确定。
  • 抽象类中的约束不像接口那么严格,可以在抽象类中定义构造方法、抽象方法、普通属性、方法、静态属性和静态方法。
  • 抽象类和接口一样都不能实例化,实例化只能实例化具体的类。
posted @ 2021-01-30 23:15  Eleanor123  阅读(76)  评论(0编辑  收藏  举报