interface接口的使用简述(一)

1、接口使用interface关键字描述定义

2、Java中,接口和类是并列的结构

3、如何定义接口:定义接口中的成员

   3.1 JDK7及以前:只能定义全局常量和抽象方法

     》全局常量:public static final的,但是书写时可以省略;

     》抽象方法:public abstract的

  3.2 JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法。  

4、接口中不能定义构造器:意味着接口不可以实例化

5、java开发中,通过类来实现(implements)接口使用:如果实现类覆盖了接口中的所有抽象方法,则此实现类就可以实例化;如果没有覆盖所有抽象方法,则此实现类仍为一个抽象类

6、java类可以实现多个接口 ----多实现弥补了java单继承性的局限性,格式:class A extends B implements C,D,E

7、接口与接口之间可以继承,并且可以多继承

8、接口具体的使用,体现多态性:见示例代码

9、接口,实际上可以看作是一种规范

补充-面试题:抽象类与接口有哪些异同?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
//面试题1:当子类继承了同名的父类成员和接口成员时,如何区分使用
 
interface A{
 
  int x=0;
 
}
 
class B{
 
  int x =1;
 
}
 
class C extends B implements A{
 
  public void pX() {
 
    // System.out.println(x);//编译不通过,提示错误,x模糊
 
    System.out.println(super.x);//1
 
    System.out.println(A.x);//0
 
}
 
  public static void main(String[] args) {
 
    new C().pX();
 
  }
 
}
 
//面试题2
 
interface Playable{
 
  void play();
 
}
 
interface Bounceable{
 
  void play();
 
}
 
interface Rollable extends Playable,Bounceable{
 
  Ball ball = new Ball("pingpang");
 
}
 
class Ball implements Rollable{
 
  private String name;
 
  public String getName() {
 
    return this.name;
 
  }
 
  public Ball(String name){
 
    this.name = name;
 
  }
 
  public void play() {//重写了两个父接口中的play方法
 
    // ball = new Ball("football"); 接口中定义了全局常量ball,不可以更改。
 
    // System.out.println(ball.getName());
 
  }
 
}

  

复制代码
public class InterfaceTest1 {

  public static void main(String[] args) {

    System.out.println(Flyable.MAX_SPEED);

    System.out.println(Flyable.MIN_SPEED);

    Plane p1 = new Plane();

    p1.fly();

    System.out.println(Plane.MAX_SPEED);

  }

}

interface Attackable{

  void attack();

}
interface Flyable{   //全局常量   public static final int MAX_SPEED = 7900;//第一宇宙速度   int MIN_SPEED=1;//省略了public static final   //抽象方法   public abstract void fly();   void stop();//省略了public abstract } class Plane extends Object implements Flyable{
  @Override   
public void fly() {     System.out.println("通过引擎起飞");   }   @Override   public void stop() {     System.out.println("通过驾驶员停止");   } } // 抽象类实现接口 abstract class Kite implements Flyable{   @Override   public void fly() {   } } //类Bullet实现多个接口 class Bullet implements Flyable,Attackable,CC{   @Override   public void attack() {   }   @Override   public void fly() {   }   @Override   public void stop() {   }   @Override   public void method1() {   }   @Override   public void method2() {   } } interface AA{   void method1(); } interface BB{   void method2(); } //接口可以继承,并可以继承多个 interface CC extends AA,BB{
}
复制代码
posted @   泥鱼生长  阅读(277)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示