• java 接口


    (python中也有抽象类和借口类的概念,但我从来没有到过,可能层次比较低)

    一、概念

    1、接口是多个类的语法规范

    2、语法

    public interface 接口名{}

    3、注意

    a、一个接口可以被多个实现类 实现

    b、接口不能被实例化

    二、实现类

    1、作用:实现接口

    2、语法

    public class 实现类名 implements 接口名 {}

    3、注意

    实现类可以继承多个接口

    三、组成

    1、常量

    A、语法

    public interface MyInterfaceVar {
        public static final int MAX_AGE = 100;
    }

    B、注意事项:

    a、常量名称大写且用下划线法则

    b、常量必须赋值

    c、常量既可以通过实现类调用,也可以通过接口调用

    d、public static final 可以省略不写

    2、抽象类

    A、语法

    public interface MyInterfaceA {
        public abstract void method();
    }

    B、注意事项

    a、抽象方法在实现类中必须 overrider,若不overrider 这个实现类,就必须要是抽象类

    b、实现类继承多个接口,且接口中有相同的抽象方法时,实现类只要重写一个即可

    c、public abstract 可以省略不写

    d、实现类的对象可以调用抽象方法

    例子

    1 package cn.wt.test.Demon01;
    2 
    3 public interface MyInterfaceA {
    4     public abstract void methodA();
    5     public abstract void method();
    6 }
    MyInterfaceA.java
    1 package cn.wt.test.Demon01;
    2 
    3 public interface MyInterfaceB {
    4     public abstract void method();
    5     public abstract void methodB();
    6 }
    MyInterfaceB
     1 package cn.wt.test.Demon01;
     2 
     3 public class MyInterImp implements MyInterfaceA, MyInterfaceB{
     4 
     5     @Override
     6     public void methodA() {
     7         System.out.println("接口A的抽象方法");
     8     }
     9 
    10     @Override
    11     public void method() {
    12         System.out.println("接口的抽象方法");
    13     }
    14 
    15     @Override
    16     public void methodB() {
    17         System.out.println("接口B的抽象方法");
    18     }
    19 }
    MyInterImp.java
     1 package cn.wt.test.Demon01;
     2 
     3 public class Demon {
     4     public static void main(String[] args) {
     5         MyInterImp imp = new MyInterImp();
     6         imp.methodA();
     7         imp.method();
     8         imp.methodB();
     9     }
    10 }
    Demon

    3、默认方法

    A、作用

    a、接口 添加新的方法时,不需要像抽象类这样,在每一个实现类 中都要 overrider

    b、默认方法可以在实现类中重写

    B、语法

    public interface MyInterfaceC {
        public default void method(){
            System.out.println("接口C中的默认方法");
        }
    }

    C、注意事项

    1、public 可以省略不写

    2、实现类的对象可以调用 默认方法

    3、当拥有多个接口,且默认方法的名称相同时,实现类 必须要重写 默认方法

    例子

     1 package cn.wt.test.Demon01;
     2 
     3 public interface MyInterfaceC {
     4 
     5     public default void methodC(){
     6         System.out.println("接口C中的C方法");
     7     }
     8 
     9     public default void method(){
    10         System.out.println("接口C中的默认方法");
    11     }
    12 }
    MyInterfaceC
     1 package cn.wt.test.Demon01;
     2 
     3 public interface MyInterfaceD {
     4     public default void methodD(){
     5         System.out.println("接口D中的D方法");
     6     }
     7 
     8     public default void method(){
     9         System.out.println("接口D中的默认方法");
    10     }
    11 }
    MyInterfaceD
    1 package cn.wt.test.Demon01;
    2 
    3 public class MyInterImp2 implements MyInterfaceC, MyInterfaceD {
    4 
    5     @Override
    6     public void method() {
    7         System.out.println("默认方法汇总");
    8     }
    9 }
    MyInterImp2
     1 package cn.wt.test.Demon01;
     2 
     3 public class Demon02 {
     4     public static void main(String[] args) {
     5         MyInterImp2 imp2 = new MyInterImp2();
     6         imp2.method();
     7         imp2.methodD();
     8         imp2.methodC();
     9     }
    10 }
    Demon02

    4、静态方法

    概念:与类中的静态方法相似

    A、语法

    public interface MyInterfaceA {
        public static void method(){
            System.out.println("接口A中的静态方法");
        }
    }

    B、注意事项

    可以直接使用接口调用静态类

    例子

    public interface MyInterfaceA {
        public static void method(){
            System.out.println("接口A中的静态方法");
        }
    }
    MyInterfaceA.java
    1 package cn.wt.test.Demon01.demon02;
    2 
    3 public class Demon {
    4     public static void main(String[] args) {
    5         MyInterfaceA.method();
    6     }
    7 }
    Demon

    5、私有方法

    A、作用

    默认方法和静态方法中有重复的代码块,进行再一步封装

    B、语法

    分类

    1、私有普通方法

    private 返回值类型 方法名称(参数列表){
             方法体      
    }

    2、私有静态方法

    private static 返回值类型 方法名称(参数列表){
        方法体    
    }

    C、注意

    这个是版本1.9 以上才有的功能(明天写,网络不好或者是我党的原因,官网下载失败)

    四、其它注意事项

    1、接口中不能有static块和 构造方法

    2、类是单继承,接口可以多继承即:一个接口可以 implement 多个接口

    3、一个类即继承又实现接口,当父类和接口中的方法发送冲突时(方法名相同),以父类的方法为优先

    4、一个类实现多个接口,且接口中有重名的抽象方法,重写一次即可

    5、一个类继承多个接口,且接口中有重名的默认方法,默认方法必须在实现类中overrider

    6、接口中的静态方法,可可以使用接口直接调用,所有不使用实现类也没关系                                                                                                                                                                                                                                                                                                                                       

  • 相关阅读:
    HDU 5744
    HDU 5815
    POJ 1269
    HDU 5742
    HDU 4609
    fzu 1150 Farmer Bill's Problem
    fzu 1002 HangOver
    fzu 1001 Duplicate Pair
    fzu 1150 Farmer Bill's Problem
    fzu 1182 Argus 优先队列
  • 原文地址:https://www.cnblogs.com/wt7018/p/12222491.html
Copyright © 2020-2023  润新知