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 //其中methodAbs是不冲突的,因为抽象方法没有方法体
 4 
 5 public class ExtendsInterfaceImpl implements ExtendsInteface {
 6     //重写默认方法,java12 不用带default关键字
 7     @Override
 8     public void methodDefault() {
 9 
10     }
11 
12     @Override
13     public void method() {
14 
15     }
16 
17     @Override
18     public void methodA() {
19 
20     }
21 
22     @Override
23     public void methodB() {
24 
25     }
26     //重写冲突的抽象方法
27     @Override
28     public void methodAbs() {
29 
30     }
31 }
 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 
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 }
 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的方法只有接口自己能调用,不能被实现类或别人使用




*/

猜你喜欢

转载自www.cnblogs.com/huxiaobai/p/11462162.html