zoukankan      html  css  js  c++  java
  • 接口

    java只允许单继承,若有一个类需要同时具备两个类的功能时,我们不能设置两个父类让该类同时继承,这时可以考虑使用接口进行实现

    接口用法:

      1.使用interface来修饰

      2.接口中可以包含多个方法,且方法跟抽象类中的抽象方法一致,可以不写实现,子类在实现的时候必须要实现代码逻辑

      3.子类实现接口使用implements关键字若一个类既要继承父类又要实现接口,顺序为先继承后实现,即extends必须在implements前

    特征:

      1.接口中的所有方法都是抽象方法,不能包含方法的实现

      2.接口中的所有方法的访问修饰权限都是public,不写并不是默认访问权限,而是public

      3.接口不能被实例化

      4.接口的子类必须要实现接口中的所有方法,而抽象类中的抽象方法必须被子类实现

      5.子类可以实现多个接口

      6.接口中的变量都是静态常量,如果变量没有使用static关键字修饰,它也表示静态常量,不用final关键字修饰也是常量 

      7.接口中的方法和常量无论是否加public修饰,默认的权限有且仅有一个,就是public 

      举例说明第6点:

      ①在编译接口时会帮我们自动添加static关键字

     1 public interface interfaces {
     2 
     3     int a = 100;
     4 
     5 }
     6 public class test {
     7     public static void main(String[] args) {
     8 
     9         System.out.println(interfaces.a);
    10 
    11     }
    12 }
    13 这里输出的结果为100,而我们注意到输出时是类名打点调用的常量a,说明a是类的常量,即在编译时会在a前加static关键字

      ②在编译接口时会帮我们自动添加final关键字

     1 public interface interfaces {
     2 
     3     int a = 100;
     4 
     5 }
     6 public class test {
     7     public static void main(String[] args) {
     8 
     9         interfaces.a = 200;
    10 
    11     }
    12 }
    13 这时报错:Cannot assign a value to final variable 'a'表明该常量值不可被修改,说明在编译接口时自动帮我们添加了final关键字

       ③在接口中定义变量必须初始化

    1 public interface interfaces {
    2 
    3     int a ;
    4 
    5 }
    6 这时会报错:Variable 'a' might not have been initialized必须进行初始化

    接口的使用:

      1.接口代表一种能力,接口中可以定义N多个方法,子类在进行实现时,必须实现这些方法,将这些方法进行实现,就意味着具体了方法的能力

      2.接口是一种约定,主要体现在接口名称和注释上,例如接口中方法的名称、方法传递的参数个数、方法传递的参数类型等等

    接口与抽象方法的区别:

      1.抽象类中的方法可以包含抽象方法也可以用普通方法,但是接口中只能包含抽象方法,所有的方法都是public  abstract的,不能有实现逻辑

      2.抽象类需要使用abstract关键字修饰,接口使用interface关键字修饰

      3.抽象类子类使用extends关键字来继承抽象类,使用implements来实现接口

      4.子类继承抽象类的时候必须要实现所有的抽象方法,普通方法可以不重写,而接口中的所有方法必须实现

      5.抽象类中可以定义成员变量,接口中只能定义静态常量

      6.抽象类在子类实现的时候是单继承,接口是多继承

      7.抽象类和接口都不能实例化,但是抽象类中可以有构造方法,接口中不能有构造方法

      8.抽象类中可以实现接口,并且不实现接口中方法,而接口只能继承接口,不能实现接口

    注意:

      在实际的项目开发过程中,如果可以实现接口,尽量使用接口,将单继承的父类留在最关键的地方

  • 相关阅读:
    一代人的青春--芳华
    用切面对监控日志的实现2
    一个在java后台实现的对图片进行加网纹或水印的工具类
    家乡的河
    家乡的鬼节—十来一儿
    八里沟印象
    双城记
    记忆中的那一树梨花
    用切面对监控日志的实现
    关于poi导出excel三种方式HSSFWorkbook,SXSSFWorkbook,csv的总结
  • 原文地址:https://www.cnblogs.com/lyc-code/p/12495897.html
Copyright © 2011-2022 走看看