栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java接口学习心得

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java接口学习心得

  • 这里的接口指的是关键字的interface
  • 接口的意义:是对不具有继承关系的同类行为的抽象,以便复用(多态的一种)
  • 接口的方法是一种约束
接口的定义
public interface OperateCar {//接口只包含常量,抽象方法、默认方法和静态方法

   int changeLanes(Direction direction,
                   double startSpeed,
                   double endSpeed);
   int signalTurn(Direction direction,
                  boolean signalOn);
   double E = 2.718282;               
         ......
   // more method signatures
}

  • 接口中所有的方法都是隐式公开的
  • 接口中所有常量值都是隐式的 public、static 和 final
向接口添加方法
public interface DoIt {//原接口
   void doSomething(int i, double x);
   int doSomethingElse(String s);
}

1.创建一个原接口的子接口,在子接口中添加方法

public interface DoItPlus extends DoIt {

   boolean didItWork(int i, double x, String s);
}

2.在原接口中将新方法定义为默认方法

public interface DoIt {

   void doSomething(int i, double x);
   int doSomethingElse(String s);
   default boolean didItWork(int i, double x, String s) {//默认方法:由default修饰的方法
     ...
   }
}
  1. 在原接口中将新方法定义为静态方法
public interface DoIt {

   void doSomething(int i, double x);
   int doSomethingElse(String s);
   static  boolean didItWork(int i, double x, String s) {//静态方法:由static修饰的方法
     ...
   }
}
  • 不要向接口添加抽象方法(如果有实现该接口的类),否则所有实现旧的原接口的类都将中断
  • 第二,三种使您能够向原接口添加新功能,并确保与为未修改的原接口的编写的类能正常使用(而且这些类可以使用新功能)
接口的实现
public class FlyingCar implements OperateCar, FlyCar {
    // ...
    public int startEngine(EncryptedKey key) {
        FlyCar.super.startEngine(key);//调用接口FlyCar的这个方法
        OperateCar.super.startEngine(key);
    }
}
}//使用接口的类必须实现其接口的所有方法,除非它是抽象类

  • 不能使用new来实例化一个接口
  • 实现接口的类的实例方法优于接口的默认方法
接口的继承
  • 可以单继承和多继承
public interface GroupedInterface extends Interface1, Interface2, Interface3 {//多继承

    double E = 2.718282;
 
    void doSomething (int i, double x);
    int doSomethingElse(String s);
}
  • 当你要继承的接口含有默认方法时:
  1. 不修改
  2. 将默认方法声明为抽象方法。
  3. 重写默认方法。
接口作为类型
  • 如果定义了一个类型为接口的引用变量,则分配给它的任何对象都必须是实现该接口的类的实例
public Object findLargest(Object object1, Object object2) {
   Relatable obj1 = (Relatable)object1;//Relatable是一个接口
   Relatable obj2 = (Relatable)object2;
   if ((obj1).isLargerThan(obj2) > 0)
      return object1;
   else 
      return object2;
}
  • 可以在任何可以使用任何其他数据类型名称的地方使用接口名称
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/644200.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号