11.2. 使用接口

比抽象类更加抽象的是接口,在接口中所有的方法都是抽象的

在Java中接口的声明使用的关键字是interface

11.2.1. 一个使用接口的例子

aaa.java

package com.a51work.cn;

public interface aaa {
    int i = 2;
}

test.java

package com.a51work.cn;

public class test {
    public static void main(String[] args) {
        // 取得接口里的值
        int n = aaa.i + 1;
        // 打印并显示
        System.out.println(n);
    }
}

11.2.2. 一个完整的带方法的接口例子

aaa.java

package com.a51work.cn;

public interface aaa {
    // 创建一个接口的方法getMax
    public int getMax();

    // 创建一个接口方法getMes
    String getMes();
}

test.java

package com.a51work.cn;

public class test implements aaa {

    // 实现接口getMax的方法
    @Override
    public int getMax() {
        int i =123;
        return i;
    }

    // 实现接口getMes的方法
    @Override
    public String getMes() {
        // 定义String类型的私有变量s
        String s = "实现接口里的方法";
        // 将变量s返回并退出方法
        return s;
    }

    public static void main(String[] args) {
        // 实例化test类
        test h1 = new test();
        //打印类中实现了接口的方法
        System.out.println(h1.getMax());
        System.out.println(h1.getMes());
    }
}


/*
123
实现接口里的方法
*/

11.2.3. 接口声明和实现 例子1

Figure.java

package JieKouClass;

public interface Figure {

// 接口中静态成员变量
// 接口中成员变量都静态成员变量
 String name = "几何图形";//省略public static final

 // 声明抽象方法
 void onDraw();   //省略public


}

Elipse.java

package JieKouClass;

//几何图形椭圆形
public class Elipse implements Figure {
 //绘制几何图形方法
 @Override
 public void onDraw() {
  // TODO 自动生成的方法存根
  System.out.println("绘制椭圆形......");

 }
}

Triangle.java

package JieKouClass;

//几何图形三角形
public class Triangle implements Figure{
 //绘制几何图形方法
 @Override
 public void onDraw() {
  // TODO 自动生成的方法存根
  System.out.println("绘制三角形.....");

 }
}

调用代码

package JieKouClass;

public class HelloWorld {

 public static void main(String[] args) {
  // TODO 自动生成的方法存根

  // f1变量是父类类型,指向子类实例,发生多态
  Figure f1 = new Triangle();
  f1.onDraw();
  System.out.println(f1.name);
  System.out.println(Figure.name);

  // f2变量是父类类型,指向子类实例,发生多态
  Figure f2 = new Elipse();
  f2.onDraw();
  System.out.println(f2.name);
  System.out.println(Figure.name);

 }

}

/*
绘制三角形.....
几何图形
几何图形
绘制椭圆形......
几何图形
几何图形
 * /
 */

注意:接口与抽象类一样都不能被实例化。

11.2.4. 接口 实现例子2

代码示例

package com.a51work1.cn;

interface PCI {
 // java接口,相当于主板上的PCI插槽
 void start();
 void stop();
}

class SoundCard implements PCI {

 public void start() {
  System.out.println("Du du du .........");
 }

 public void stop() {
  System.out.println("Sound  stop .....!");
 }
}

class NetworkCard implements PCI {
 public void start() {
  System.out.println("Send .............");
 }

 public void stop() {
  System.out.println("Network stop !..");
 }
}

class MainBoard {
// 该方法可使主板插入任意符合PCI插槽规范的卡
 public void usePCICard(PCI p) {
  p.start();
  p.stop();
 }

}

public class Assembler {

 public static void main(String[] args) {
  // TODO 自动生成的方法存根
  PCI nc = new NetworkCard();
  PCI sc = new SoundCard();
  MainBoard mb = new MainBoard();

//  主板上插入网卡
  mb.usePCICard(nc);
//  主板上插入声卡
  mb.usePCICard(sc);
 }

}

/**
Send .............
Network stop !..
Du du du .........
Sound  stop .....!
 **/