zoukankan      html  css  js  c++  java
  • Interface-接口的实现与注意事项

    package cn.learn.Interface;
    
    public interface MyInterfaceA {
       public abstract void methodA();
       public abstract void methodAbs();
       public default  void methodDefault(){
           System.out.println("aaa");
       }
    }
    package cn.learn.Interface;
    
    public interface MyInterfaceB {
       public abstract void methodB();
       public abstract void methodAbs();
       public default  void methodDefault(){
          System.out.println("bbb");
       }
    }
    
    
     1 package cn.learn.Interface;
     2 /*
     3   类与接口的区别
     4   1.类与类之间是单继承的,直接父类只有一个
     5   2.类与接口之间是多实现的,一个类可以实现多个接口
     6   3.接口与接口之间是多继承的,某个接口想要其他接口的多种抽象方法
     7 
     8 下面的借口,内含五种方法
     9 1.methodA
    10 2.methodB
    11 3.method
    12 **4.methodAbs 同时来源与借口A与B,只写一个
    13 5.methodDefault() 必须重写
    14 *
    15 注:多继承接口的类中,多父继承的接口方法冲突没关系,但是default方法重复会有问题
    16 
    17  */
    18 
    19 public interface ExtendsInteface extends MyInterfaceB,MyInterfaceA {
    20     public abstract void method();
    21 
    22     @Override
    23     default void methodDefault() {
    24 
    25     }
    26 }
    27 
    28 
    29 package cn.learn.Interface;
    30 //多继承的接口的实现
    31 //其中methodAbs是不冲突的,因为抽象方法没有方法体
    32 
    33 public class ExtendsInterfaceImpl implements ExtendsInteface {
    34     //重写默认方法,java12 不用带default关键字?
    35     @Override
    36     public void methodDefault() {
    37 
    38     }
    39 
    40     @Override
    41     public void method() {
    42 
    43     }
    44 
    45     @Override
    46     public void methodA() {
    47 
    48     }
    49 
    50     @Override
    51     public void methodB() {
    52 
    53     }
    54     //重写冲突的抽象方法
    55     @Override
    56     public void methodAbs() {
    57 
    58     }
    59 }
    
    
     1 package cn.learn.Interface;
     2 /*
     3     接口注意事项:
     4  1.接口没有静态代码块static{}和构造方法
     5 
     6  2.虽然一个类的直接父类是唯一的,但是一个类可以同时实现多个接口
     7  格式:
     8  public class MyInterfaceImpl implements 接口A名称,接口B名称{
     9         //覆盖所有抽象方法
    10  }
    11 
    12  3.如果实现类中实现的多个接口中,存在重复的抽象方法,那么只需要覆盖重写
    13    一次即可(如果是多个接口有default方法,必须在此类进行覆盖重写)
    14 
    15 4.如果实现类没有实现所有接口的所有抽象方法
    16   实现类必须是抽象类
    17 
    18 6.一个子类如果继承直接父类当中的方法,和接口中的默认方法产生冲突,优先用父类方法
    19   格式:
    20   public class 子类名称 extends 父类 implements 接口{
    21     方法体
    22 23   注:这种情况下不必重写接口的default方法,因为优先级低于父类
    24 
    25 
    26  */
    27 //java中所有的类都直接或者间接的是Object的子类,如下
    28 public class MyinterfaceImpl extends Object implements MyInterfaceA,MyInterfaceB{
    29     //重写两个接口相同的抽象方法
    30     @Override
    31     public void methodAbs() {
    32         System.out.println("重写两个接口相同的抽象方法");
    33     }
    34 
    35     @Override
    36     public void methodDefault() {
    37 
    38     }
    39 
    40     //覆盖重写了接口A与接口B所有的抽象方法
    41     @Override
    42     public void methodA() {
    43         System.out.println("覆盖重写了A方法");
    44     }
    45 
    46     @Override
    47     public void methodB() {
    48         System.out.println("重写了B方法");
    49     }
    50 }
     
    /*
    接口内容总结
    1.成员变量其实是有 public static final修饰,即为全局常量
      且常量必须赋值,并不可改变
      格式要完全大写,用下划线分割单词,
    
    2.接口中最重要的是抽象方法,格式:
      public abstract 返回值类型 方法名(参数列表);
      注意:实现类必须重写所有所有接口方法,除非是抽象类
    
    3.从java 8开始,接口允许定义默认方法,格式:
      public defalut 返回值类型 方法名称(参数列表){
        方法体  
      }
      注意:默认方法也可以覆盖重写
    
    4.从java 8开始,接口允许定义静态方法,格式:
      public static 返回值类型 方法名称(参数列表){
        方法体  
      }
      注意:static应该通过接口名称进行调用,不能通过实现类调用static修饰的方法
    
    5.从java 9开始,接口允许定义私有方法,格式
      普通私有方法:
      public private 返回值类型 方法名称(参数列表){
        方法体
      }
      静态私有方法:
      public private static 返回值类型 方法名称(参数列表){
        方法体
      }
      注意:private的方法只有接口自己能调用,不能被实现类或别人使用
    
    
    
    
    */

  • 相关阅读:
    Android 懒加载简单介绍
    Android 使用RxJava实现一个发布/订阅事件总线
    Android 第三方库RxLifecycle使用
    Android 使用Retrofit2.0+OkHttp3.0实现缓存处理+Cookie持久化第三方库
    代码雨
    我的第一个博客(My first blog)
    merge法
    如何使用git将remote master上的内容merge 到自己的开发分支上  &  以及将自己分支的内容merge到remote master上...
    git 解决冲突
    Mac安装和破解激活Charles
  • 原文地址:https://www.cnblogs.com/huxiaobai/p/11462162.html
Copyright © 2011-2022 走看看