• 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 }

      代码运行

      

      

  • 相关阅读:
    Redis学习03:Redis数据持久化
    Redis学习02:Redis数据类型
    项目总结42:Linux下vim操作常用指令
    Java深入学习02:CAS 算法以及低层原理
    Java深入学习01:volatile的原理和使用
    项目总结39:Springboot打jar包并本地运行
    项目总结38:使用httpcomponents: httpclient请求数据
    项目总结37:Java上传图片保存到Oracle以及读取图片
    Redis学习01:Redis配置文件redis.conf详解
    Oracle学习笔记04:timestamp时间大小比较
  • 原文地址:https://www.cnblogs.com/zhuxr/p/8926490.html
Copyright © 2020-2023  润新知