zoukankan      html  css  js  c++  java
  • 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、接口中的静态方法,可可以使用接口直接调用,所有不使用实现类也没关系                                                                                                                                                                                                                                                                                                                                       

  • 相关阅读:
    数学之美(吴军著)学习总结和经典摘抄
    【翻译自mos文章】Oracle GoldenGate 怎么在源头的传输进程和目的端的server/collector进程之间分配 port?
    atitit.浏览器插件解决方式----ftp插件 attilax 总结
    Libgdx: android单机斗地主支持局域网wifi联网的网络模块核心代码
    毕业前的五味杂陈
    Online Object Tracking: A Benchmark 论文笔记
    开源前夕先给大家赞赏一下我用C语言开发的云贴吧 站点自己主动兼容-移动、手机、PC自己主动兼容云贴吧
    JVM —— Java 对象占用空间大小计算
    Python之爬虫-京东商品
    Python之游戏开发-飞机大战
  • 原文地址:https://www.cnblogs.com/wt7018/p/12222491.html
Copyright © 2011-2022 走看看