Java面向对象之接口interface 入门实例

一、基础概念

  (一)接口可以简单的理解为,是一个特殊的抽象类,该抽象类中的方法都是抽象的。

     接口中的成员有两种:1.全局常量 2.抽象方法

     定义接口用关键字interface,接口中的成员都用固定的修饰符public来修饰。

  (二)接口的特点:

    1、接口不可以实例化。

    2、接口的子类必须覆盖接口中的所有抽象方法后,才可以实例化。否则该子类是抽象类。

    3、接口是用来被实现的。

  (三)接口解决的问题:

    1.因为多继承调用的不确定性,java中是不直接支持多继承的,但可以通过接口来解决,将多继承转换成多实现。

    2.因为子类具备所属的父类体系的基本功能后,还想扩展一些其他功能。可以通过接口来完成。

    3.避免单继承的局限性。一个类继承另一个类的同时,还可以实现多个接口。

   (四)接口的思想:

    1.接口的出现扩展了功能。

    2.接口的出现其实就是暴露出来的规则。

    3.接口的出现降低了耦合性。(用于解耦)

    4.接口的出现,一方在使用接口,一方在实现接口。

  (五)类与接口的区别:

    1.类与类之间的关系是继承关系。

    2.类与接口之间的关系是实现关系。

    3.接口与接口的关系是继承关系,而且可以多继承。

    4.抽象类中可以定义抽象和非抽象方法。子类可以直接使用,或者覆盖使用。接口中定义都是抽象方法,必须实现后才能使用。

    5.类用于描述是事物的共性基本功能,接口用于定义的是事物的额外功能。

二、实例代码(一)

  1.定义接口子类SubInter_1,进行接口InterA的实现

  2.定义接口子类SubInter_2,进行接口InterA接口和InterB的多实现

  3.定义接口子类SubInter_3,继承Fu类还进行接口InterA的实现

  3.定义接口子类SubInter_4,继承Fu类还进行接口InterA和InterB的多实现

  1 //定义父类Fu
  2 class Fu 
  3 {
  4     public void show1()
  5     {
  6         System.out.println("Fu show1 ......");
  7     }
  8 }
  9 
 10 //定义接口InterA
 11 interface InterA
 12 {
 13     public static final int num1 = 4;  //全局常量
 14     public abstract void show2();  //抽象方法
 15 }
 16 
 17 //定义接口InterB
 18 interface InterB
 19 {
 20     public static final int num2 = 6;
 21     public abstract void show3();
 22 }
 23 
 24 //定义接口子类SubInter_1,进行实现
 25 class SubInter_1 implements InterA//子类SubInter1实现 InterA接口
 26 {
 27     public void show2()
 28     {
 29         System.out.println("SubInter_1 InterA show2 ......");
 30     }
 31 }
 32 
 33 //定义接口的子类SubInter_2,进行多实现
 34 class SubInter_2 implements InterA,InterB//用子类SubInter2 多实现 InterA接口和Inter接口
 35 {
 36     public void show2()
 37     {
 38         System.out.println("SubInter_2 InterA show2 ......");
 39     }
 40     public void show3()
 41     {
 42         System.out.println("SubInter_2 InterB show3 ......");
 43     }
 44 }
 45 
 46 
 47 //SubInter_3类继承了Fu类的基本功能,还实现了InterA接口的基本功能。
 48 class SubInter_3 extends Fu implements InterA
 49 {
 50     public void show2()
 51     {
 52         System.out.println("SubInter_3 InterA show2 ......");
 53     }
 54     
 55 }
 56 
 57 //SubInter_4类继承了Fu类的基本功能,还实现了InterA接口和InterB接口的基本功能。
 58 class SubInter_4 extends Fu implements InterA,InterB
 59 {
 60     public void show2()
 61     {
 62         System.out.println("SubInter_3 InterA show2 ......");
 63     }
 64     
 65     public void show3()
 66     {
 67         System.out.println("SubInter_3 InterB show3 ......");
 68     }
 69 }
 70 
 71 class InterfaceDemo1 
 72 {
 73     public static void main(String[] args) 
 74     {
 75         //SubInter_1实例化 s1
 76         SubInter_1 s1 = new SubInter_1();
 77         System.out.println(s1.num1);
 78         System.out.println(SubInter_1.num1);
 79         s1.show2();
 80         
 81         //SubInter_2实例化 s2
 82         SubInter_2 s2 = new SubInter_2();
 83         System.out.println(s2.num1);
 84         System.out.println(s2.num2);
 85         System.out.println(SubInter_2.num1);
 86         s2.show2();
 87         s2.show3();
 88         
 89         //SubInter_3实例化 s3        
 90         SubInter_3 s3 = new SubInter_3();
 91         System.out.println(s3.num1);
 92         System.out.println(SubInter_3.num1);
 93         s3.show1();
 94         s3.show2();
 95         
 96         //SubInter_4实例化 s4
 97         SubInter_4 s4 = new SubInter_4();
 98         System.out.println(s4.num1);
 99         System.out.println(s4.num2);
100         System.out.println(SubInter_4.num2);
101         s4.show1();
102         s4.show2();
103         s4.show3();
104     }
105 }

  代码执行

  

三、实例代码(二)

  1.定义接口InterB,继承接口InterA。并实现InterB

  2.定义接口InterD,继承接口InterB和接口InterC.并实现InterD

 1 //定义接口InterA
 2 interface InterA
 3 {
 4     public static final int num = 4;
 5     public abstract void show1();
 6 }
 7 
 8 //定义接口InterB,继承接口InterA
 9 interface InterB extends InterA
10 {
11     public abstract void show2();
12 }
13 
14 //定义接口InterC
15 interface InterC 
16 {
17     public abstract void show3();
18 }
19 
20 //定义接口InterD,继承接口InterB和接口InterC
21 interface InterD extends InterB,InterC
22 {
23     public abstract void show4();
24 }
25 
26 //定义接口子类SubInter,进行实现
27 class SubInter_1 implements InterB
28 {
29     public void show1()
30     {
31         System.out.println("SubInter_1 InterA show1 ......");
32     }
33     
34     public void show2()
35     {
36         System.out.println("SubInter_1 InterB show2 ......");
37     }
38 }
39 
40 //定义接口子类SubInter,进行实现
41 class SubInter_2 implements InterD
42 {
43     public void show1()
44     {
45         System.out.println("SubInter_2 InterA show1 ......");
46     }
47     
48     public void show2()
49     {
50         System.out.println("SubInter_2 InterB show2 ......");
51     }
52     
53     public void show3()
54     {
55         System.out.println("SubInter_2 InterC show3 ......");
56     }
57     
58     public void show4()
59     {
60         System.out.println("SubInter_2 InterD show4 ......");
61     }
62 }
63 
64 class InterfaceDemo2
65 {
66     public static void main(String[] args) 
67     {
68         
69         //SubInter_1实例化s1        
70         SubInter_1 s1 = new SubInter_1();
71         System.out.println(s1.num);
72         s1.show1();
73         s1.show2();
74         
75         //SubInter_2实例化s2
76         SubInter_2 s2 = new SubInter_2();
77         System.out.println(s1.num);
78         s2.show1();
79         s2.show2();
80         s2.show3();
81         s2.show4();
82     }
83 }

  代码执行

  

四、实例代码(三)

  接口Inter中有4个方法,子类只想用其中的一个方法。

  用DemoA类实现接口Inter中的所有方法进行解决。

 1 interface Inter
 2 {
 3     public abstract void show1();
 4     public abstract void show2();
 5     public abstract void show3();
 6     public abstract void show4();
 7 }
 8 
 9 //为了方便创建Inter接口的子类对象,先创建一个DemoA类实现接口Inter。
10 //因为Demo类创建对象没有意义。所以将该类抽象。
11 abstract class DemoA implements Inter
12 {
13     public void show1(){}
14     public void show2(){}
15     public void show3(){}
16     public void show4(){}
17 }
18 
19 class DemoB extends DemoA
20 {
21     public void show1()
22     {
23         System.out.println("Inter show1 ......");
24     }
25 }
26 
27 class InterfaceDemo3
28 {
29     public static void main(String[] args) 
30     {        
31         DemoB s1 = new DemoB();
32         s1.show1();
33     }
34 }

  代码运行

  

 

 

  

 

posted @ 2018-04-24 10:10  竹小冉  阅读(2436)  评论(0编辑  收藏  举报