接口

   接口是抽象类的更进一步。抽象类可以包含非抽象方法和字段,但接口当中包含的方法均是由抽象方法以及被static final 修饰的静态常量。

语法规则

  接口的关键字为 interface,如下代码所示:

interface IPaint{
   public static final int A = 10;
   public abstract void draw();
}

  关于接口当中的静态常量必须进行初始化。另外,其中的public,static,final关键字都可以被省略,即 int A = 10; 。接口当中的方法一定为抽象方法,一定被 public 所修饰。在接口当中,方法尽量保持简洁,即: void draw();接口是不能够进行实例化的,能够通过普通类通过 implements 关键字来实现这个接口。如下代码所示:

interface IPaint{
   int A = 10;
   void draw();
}
class Red implements IPaint{
   public Red(){}
   @override
   public void draw(){
      System.out.println("涂红色");
   }
}
public class JavaTest01{
   public static void main(String[] args){
      IPaint paint = new Red();
      paint.draw();
   }
}
---------------------------------
输出结果:
   涂红色

实现多个接口

  在java当中只支持单继承,即一个类只能拥有继承一个父类,但是可以同时实现多个接口,这样就能够达到多继承的效果。
  先通过类来表示一组动物:

class Animal{
  public String name;
  public Animal(String name){
    this.name = name;
  }
}

  在提供一组接口,分别表示”会飞的“、”会游泳的“、”会跳的“。

interface Flying{
  void fly();
}
interface Jumping{
  void jump();
}
interface Swimming{
  void swim();
}

  对于两栖动物青蛙来说,即能跳,也能游。

class Frog extends Animal implements Running,Swimming{
  public Frog(String name){
    super(name);
  }
  public void jump(){
    System.out.println(this.name + "正在往前跳");
  }
  public void swim(){
    System.out.println(this.name + "正在水里游泳");
  }
}

  对于鱼儿来说,只能游泳

class Fish extends Animal implements Swimming{
  public Fish(String name){
    super(name);
  }
  public void swim(){
    System.out.println(this.name + "用尾巴在游泳");
  }
}

  对于上述代码就能展现出Java面向对象编程的最常见的用法:一个类继承一个父类,同时实现了多个接口。不难看出,集成主要表达的含义是 is - a 的关系,而接口所表达的为 具有何种特性
  使用接口之后,就能够让程序员忘记 类型,类的使用者就不必关注具体类型,而是只关注某个类是否具备某种特性。

接口间的继承

  接口可以继承一个接口,达到复用的效果,接口和接口之间是使用extends关键字的。

interface Running{
  void run();
}
interface Swimming{
  void swim();
}
//对于两栖动物来说,即能跑也能游泳
interface Amphibious extends Running,Swimming{
}
class Frog implements Amphibious{
  public void run(){
    Systemout.println("青蛙用双腿在跳");
  }
  public void swim(){
    System.out.printl("青蛙会游泳");
  }
}

  通过接口继承创建的一个新的接口 Amphibious 表示为两栖动物,此时Frog 就需要具体实现 run() 方法和 swim() 方法。

总结

  抽象类和接口都是Java 中多态的常见使用方式。
  核心区别:抽象类中可以包含普通方法和普通字段,这样的普通方法和总段可以被子类直接使用,而接口中只有抽象方法,子类必须重写所有抽象方法。

区别抽象类(abstract)接口(interface)
1结构组成普通类+抽象方法抽象方法+静态常量
2权限各种权限public
3子类使用使用extends关键字继承抽象类使用implements关键字实现接口
4关系一个抽象类可以实现若干个接口接口不能继承抽象类,但是接口可以使用extends关键字继承多个接口
5子类限制一个子类只能继承一个抽象类一个子类可以实现多个接口}

  实际上,接口要比抽象类更常见。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值