zoukankan      html  css  js  c++  java
  • Java 接口 interface关键字

    1.概念:一种特殊的类,有全局常量和公共方法组成

     定义接口用interface关键字

    2.语法:            //中括号“[ ]”的含义:你可继承父接口,也可不继承,是可选的

    [修饰符] (abstract) interface 接口名[extends 父接口1,父接口2...]  //接口可继承多个父接口(即:接口是多继承的);abstract若没写,系统会自动加上

    {

    0个到多个常量定义...

    0个到多个抽象方法的定义...

    }

    接口就是用来被继承,被实现的,修饰符一般建议用public

    注意:不能使用private和protected修饰接口

    3.接口定义:

    常量:接口中的属性是常量,即使定义时不添加public static final修饰符,系统也会自动加上。

    方法:接口的方法只能是抽象方法,总是使用,即使定义时不添加public abstract修饰符,系统也会自动加上。

    4.一个类可以实现一个或多个接口,实现接口使用implement关键字,Java中一个类能继承一个父类,是不够灵活的,可通过实现多个接口来补充

    继承父类实现接口的语法为:

    [修饰符] class 类名 extends 父类 implement 接口1,接口2...

    {

    类体部份  //如果继承了抽象类,需要实现继承的抽象方法;如果遵守了一个接口,就要实现接口中的抽象方法

    }

    如果要继承父类,继承父类必须在实现接口之前

    例:

    abstract class Telphone{    //此父类只是用来约束子类,所以可以定义成抽象类

    public abstract void call();    //在抽象类里若想要约束子类,就可定义为抽象方法       抽象方法没有方法体以分号结束

    public abstract void message();

    }

    class Cellphone extends Telphone{

       public void call(){        //实现抽象类里要求的方法call

        System.out.println("通过键盘来打电话");

      }

       public void message(){    //实现抽象类里要求的方法message

        System.out.println("通过键盘来发短信");

      }

    }

    class Smartphone extends Telphone{

      public void call(){

        System.out.println("通过语音来打电话");

      }

      public void message(){

        System.out.println("通过语音来发短信");

      }

    }

    class Ex17{

      public static void main(String[] args){

        Telphone tel1=new Cellphone();    //抽象类的父类引用指向一个子类对象,先创建一个普通的电话的对象

        tel1.call();    //通过引用就可以打电话

        tel1.message();  //通过引用就可以发短信

        Telphone tel2=new Smartphone();  //通过父类的引用指向智能手机的对象

        tel2.call();

        tel2.message();

      }

    }

    interface IplayGame{

    public void PlayGame();

    }

    abstract class Telphone{    //此父类只是用来约束子类,所以可以定义成抽象类

    public abstract void call();    //在抽象类里若想要约束子类,就可定义为抽象方法       抽象方法没有方法体以分号结束

    public abstract void message();

    }

    class Cellphone extends Telphone implements IplayGame{

      public void call(){        //实现抽象类里要求的方法call

        System.out.println("通过键盘来打电话");

      }

      public void message(){    //实现抽象类里要求的方法message

        System.out.println("通过键盘来发短信");

      }

    }

    class Smartphone extends Telphone{

      public void call(){

        System.out.println("通过语音来打电话");

      }

      public void message(){

        System.out.println("通过语音来发短信");

      }

      public void PlayGame(){

        System.out.println("具有玩游戏的功能");

      }

    }

    class psp implements IplayGame{      //不能继承phone抽象类,但psp有游戏的特性,所以要遵守IplayGame接口

      public void PlayGame(){

        System.out.println("具有玩游戏的功能");

      }

    }

    class Ex17{

      public static void main(String[] args){

        Telphone tel1=new Cellphone();    //抽象类的父类引用指向一个子类对象,先创建一个普通的电话的对象

        tel1.call();    //通过引用就可以打电话

        tel1.message();  //通过引用就可以发短信实现了接口的对象

        Telphone tel2=new Smartphone();  //通过父类的引用指向智能手机的对象

        tel2.call();

        tel2.message();

        IplayGame ip1=new Smartphone();      //ip1接口引用指向一个实现了接口的对象

        ip1.PlayGame();

        IplayGame ip2=new psp();

        ip2.PlayGame();

    IplayGame ip3=new IplayGame();{  //new一个接口的代码                输出:通过键盘来打电话          或者:new IplayGame(){

        public void PlayGame(){                                 通过键盘来发短信             public void PlayGame(){   

          System.out.println("使用匿名内部类的方式实现接口");         通过语音来打电话              System.out.println("使用匿名内部类的方式实现接口");

      }                                   通过语音来发短信              }

    };                                      具有玩游戏的功能               }

    ip3.PlayGame();                              具有玩游戏的功能

    }                                      使用匿名内部类的方式实现接口

    }

    使用接口:

    接口在使用过程中,还经常与匿名内部类配合使用

    匿名内部类:没有名字的内部类,多用于关注实现而不关注实现类的名称

    例://直接new一个接口,直接在接口里实现这个代码

    interfacce i=new interface(){

    public void method(){

    System.out.println("匿名内部类实现接口的方式");

    }

    };

  • 相关阅读:
    歌词:青春
    转载:只输了五元钱
    极静之渊

    低学翁
    心灵死化,何时巨变?
    无题

    意念
    爱之切
  • 原文地址:https://www.cnblogs.com/chenyuan7/p/8030280.html
Copyright © 2011-2022 走看看