zoukankan      html  css  js  c++  java
  • JAVA:接口

    转自:http://www.cnblogs.com/zxl-jay/archive/2011/09/24/2189740.html

    有所修改

    Java中在接口的应用中,要注意一下几点:

    <1>接口一般定义的是常量和一些抽象方法。抽象类中可以包含抽象方法,也可以有非抽象方法,但是有抽象方法的类一定是抽象类。抽象方法不能有方法体。

    <2>在引用接口时,接口的引用指向实现的对象,尽量定义为接口或父类的引用。这其中有可能用到多态的知识。引用接口用implements。

    <3>接口(interface)只能定义抽象方法而且默认为是Public。常量是public static final 修饰的

    <4>通过implements来引用接口。例:Class runnrtmp inplements runner.

    <5>多个无关类可以实现一个接口,!!!!接口的引用指向实现的对象。

    <6>一个类可以实现多个无关的接口(这点和继承要有所区别)

    <7>和继承一样,接口与实现类之间存在多态性。

    <8>接口可以继承其他的接口,并添加新的属性和抽象方法。

    <9>在类中实现接口的方法时必须加上public修饰符

    下面通过一个例子来对上面的要点进行下说明

    接口的应用1:

    View Code
     1  1 interface Runner //定义接口
     2  2 {
     3  3         int i=3;
     4  4         public void start();
     5  5         void run();
     6  6         void stop();
     7  7 }
     8  8 interface Eater extends Runner //接口间可以继承
     9  9 {
    10 10         public final static int j=4;
    11 11         void openMouth();
    12 12         void upAndDown();
    13 13         void goIn();
    14 14 }
    15 15 class TT implements Eater //引用接口
    16 16 {
    17 17         public void start()
    18 18         {
    19 19                 System.out.println("---------start()-------");
    20 20         }
    21 21         public void run()
    22 22         {
    23 23                 System.out.println("---------run()-------");
    24 24         }
    25 25         public void stop()
    26 26         {
    27 27                 System.out.println("---------stop()-------");
    28 28         }
    29 29         public void openMouth()
    30 30         {
    31 31                 System.out.println("---------openMouth()-------");
    32 32         }
    33 33         public void upAndDown()
    34 34         {
    35 35                 System.out.println("---------upAndDown()-------");
    36 36         }
    37 37         public void goIn()
    38 38         {
    39 39                 System.out.println("---------goIn()-------");
    40 40         }
    41 41 }
    42 42 public class TestInterface
    43 43 {
    44 44         public static void main(String[] args)
    45 45         {
    46 46                 Runner tt=new TT();//接口的引用指向实现的对象
    47 47                 System.out.println(tt.i);
    48 48                 System.out.println(Runner.i);
    49 49                 tt.start();
    50 50                 Eater ee=new TT();
    51 51                 System.out.println(ee.j);
    52 52                 System.out.println(Eater.j);
    53 53                 ee.start();
    54 54         }
    55 55 }

    接口的应用2:

    View Code
     1  1 public class TestInterface {
     2  2         
     3  3         public static void main(String[] args){
     4  4                 
     5  5                 CareAnimalable c = new Worker();
     6  6                 //Worker w = (Worker)c;
     7  7                 TestInterface t = new TestInterface();
     8  8                 t.t(c); //多态
     9  9 
    10 10                 c = new Farmer();
    11 11                 t.t(c); 
    12 12 
    13 13                 
    14 14         }
    15 15 
    16 16         public void t(CareAnimalable c){//尽量定义为接口或父类的引用
    17 17                 c.feed();
    18 18                 c.play();
    19 19         }
    20 20 }
    21 21 
    22 22 
    23 23 interface CareAnimalable{
    24 24         public void feed();
    25 25         public void play();
    26 26 }
    27 27 
    28 28 class Worker implements CareAnimalable{
    29 29         
    30 30         public void feed(){
    31 31                 System.out.println("-----feed()----");
    32 32         }
    33 33 
    34 34         public void play(){
    35 35                 System.out.println("-----play()----");
    36 36         }
    37 37 }
    38 38 
    39 39 class Farmer implements CareAnimalable{
    40 40         
    41 41         public void feed(){
    42 42                 System.out.println("-----Farmer feed()----");
    43 43         }
    44 44 
    45 45         public void play(){
    46 46                 System.out.println("-----Farmer play()----");
    47 47         }
    48 48 }

    接口的应用3:

    View Code
     1 interface PCI
     2 {
     3    public void use();
     4    public void close();
     5 }
     6 class NetCard implements PCI
     7 {
     8    public void use()
     9    {
    10        System.out.println("run NetCard");
    11     }
    12    public void close()
    13    {
    14        System.out.println("close NetCard");
    15     }
    16 }
    17 class MainBoard
    18 {
    19    public void run()
    20    {
    21        System.out.println("run MainBoard");
    22     }
    23    public void usePCI(PCI p)
    24    {
    25        p.use();
    26        p.close();
    27     }
    28 }
    29 public class TestMainBoard
    30 {
    31    public static void main(String[] args)
    32    {
    33        MainBoard mb = new MainBoard();
    34        mb.run();
    35        mb.usePCI(new NetCard());
    36     }
    37 }

    注意:

    接口定义中,数据和方法的默认定义方式为:

    数据:public static final 

    方法: public abstract 

    在类中,重写接口中的方法时,务必加上修饰符public

     

    例子:

    interface InterA
    {
       public static final int OKA = 1;
       public abstract void showA();
    }
    interface InterB
    {
       public abstract void showB();
    }
    interface InterC extends InterA,InterB//JAVA可支持接口的多继承,但不支持类的多继承
    {
       public abstract void showC();
    }
    interface InterD
    {
       public abstract void showD();
    }
    class TextInter implements InterC,InterD//JAVA可实现接口的多实现
    {
       public void showA()
       {
           System.out.println("showA");
        }
        public void showB()
       {
           System.out.println("showB");
        }
        public void showC()
       {
           System.out.println("showC");
        }
        public void showD()
        {
            System.out.println("showD");
        }
    }
    public class TestInterface
    {
       public static void main(String[] args)
       {
           TextInter textInter = new TextInter();
           textInter.showA();
           textInter.showB();
           textInter.showC();
            textInter.showD();
           System.out.println(textInter.OKA);
           System.out.println(TextInter.OKA);
           System.out.println(InterA.OKA);
        }
    }

     

  • 相关阅读:
    Python全栈开发之---mysql数据库
    python爬虫项目(scrapy-redis分布式爬取房天下租房信息)
    python多线程爬虫+批量下载斗图啦图片项目(关注、持续更新)
    python爬虫+数据可视化项目(关注、持续更新)
    超融合基本架构简单定义
    开启新生之路,,,学习网络
    Redhat7.2 ----team网卡绑定
    设计原则
    java应用程序的运行机制
    java三大版本和核心优势
  • 原文地址:https://www.cnblogs.com/KeenLeung/p/2508731.html
Copyright © 2011-2022 走看看