栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础复习 Day 13

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础复习 Day 13

Java基础复习 Day 13 1. 接口
  • 接口就是不同类之间要符合一个公共规范,只要符合标准,谁都可以使用

    接口是一种引用类型,最重要的就是其中的抽象方法。

  • interface接口定义格式

    public interface 接口名称{

    //接口内容

    }

    备注:即使定义为interface编译成字节码文件时,仍旧是会被编译成.class文件。

  • 接口内容:

    • JAVA8

      1.常量

      成员变量,其实是常量,格式:

      [][] [public] [static] [final] 数据类型 常量名 = 数据值

      注意:常量必须要赋值,并且一旦赋值不能改变

      常量名称完全大写,用下划线进行分割

      2.抽象方法

      3.默认方法

      4.静态方法

      //定义一个接口
      
      public interface DemoInterface01 {
          public abstract void methodAbstract();
          void methodAbstract2();
      }
      //定义一个实现类覆写接口抽象方法
      public class DemoInterImpl implements DemoInterface01{
          @Override
          public void methodAbstract() {
              System.out.println("第一个抽象方法被覆写");
          }
      
          @Override
          public void methodAbstract2() {
              System.out.println("第二个抽象方法被覆写");
          }
      }
      //接口在main函数中的使用
      public static void main(String[] args) {
              DemoInterImpl demoInter = new DemoInterImpl();
              demoInter.methodAbstract();//第一个抽象方法被覆写
              demoInter.methodAbstract2();//第二个抽象方法被覆写
          }
      
  • 接口内容从java8 开始可以定义default方法

    default方法格式:

    public default method(参数类型){

    //方法体

    }

    • 备注:default方法是为了解决接口升级的问题(当接口,实现类都投入使用时,如果再在接口添加新抽象方法,则所有的实现类都需要改,这时候就会有一个解决案让修改最小化,就是定义一个default方法

    • 注意事项:

      1. 接口的默认方法可以通过实现类直接调用

      2. 接口的默认方法也尅被实现类覆盖重写

        //定义一个接口,并定义默认方法
        public interface DemoInterface01 {
            public abstract void methodAbstract();
            void methodAbstract2();
            //新添加的默认方法:public可以省略
            public default void methodDefault(){
                System.out.println("这是一个默认方法");
            }
        }
        //实现类1,没有覆写默认方法
        public class DemoInterImpl implements DemoInterface01{
            @Override
            public void methodAbstract() {
                System.out.println("第一个抽象方法被覆写");
            }
        
            @Override
            public void methodAbstract2() {
                System.out.println("第二个抽象方法被覆写");
            }
        }
        //实现类2,覆写默认方法
        public class Demo2InterImpl implements DemoInterface01{
            @Override
            public void methodAbstract() {
                System.out.println("");
            }
        
            @Override
            public void methodAbstract2() {
                System.out.println("");
            }
        
            @Override
            public void methodDefault() {
                System.out.println("default方法被实现类重写了");
            }
        }
        //Main方法通过实现类调用默认方法来实现接口
        public class DemoMain {
            public static void main(String[] args) {
                DemoInterImpl demoInter = new DemoInterImpl();
                demoInter.methodAbstract();//第一个抽象方法被覆写
                demoInter.methodAbstract2();//第二个抽象方法被覆写
                //实现类可以直接调用default方法
                demoInter.methodDefault();//这是一个默认方法
                Demo2InterImpl demo2Inter = new Demo2InterImpl();
                demo2Inter.methodDefault();//default方法被实现类重写了
            }
        }
        
        
  • 接口中定义静态方法(Java8)

    格式:

    public static method(参数类型){

    //方法体

    }

    使用:通过接口名直接调用静态方法

    //接口中定义静态方法
    public interface DemoInterface01 {
        public static void methodStatic(){
            System.out.println("这是一个接口中的静态方法");
        }
    }
    //实现类中不能实现该方法并且在main方法中也不能通过实现类对象调用
    //Main方法中,直接通过接口来调用
    public static void main(String[] args) {
            DemoInterface01.methodStatic();//这是一个接口中的静态方法
    
        }
    
  • 在Java9+的版本中,接口的内容除了Java8允许定义的内容还可以有:

    1. 普通私有方法

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

    2. 静态私有方法

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

    注意:private的方法只有接口自己才可以调用,不能被实现类或者别人使用

  • 接口的注意事项:

    1. 接口没有静态方法块和构造方法
    2. 一个类的直接父类有且仅有一个,但一个类可以实现多个接口 用逗号隔开
    3. 如果实现类要实现的接口里多个接口的抽象方法一样,则只需重写一次即可。
    4. 如果实现类没有实现所有接口的抽象方法,就得定义为抽象类。
    5. 如果实现类要实现的接口里多个接口的的默认方法一样,则必须要重写默认方法。
    6. 一个类,如果直接父类的方法和接口中的方法名有冲突,则优先使用父类方法。
  • 接口之间的多继承

    1. 类与类之间是单继承的,一个类只能有一个直接父类
    2. 类与接口之间是多实现的,一个类能实现多个接口
    3. 接口与接口之间是多继承的
    //父接口1
    public interface MyInterface1 {
        public abstract void method1();
        public abstract void method1Common();
    }
    //父接口2
    public interface MyInterface2 {
        public abstract void method2();
        public abstract void method1Common();
    }
    //子接口
    public interface MyInterface extends MyInterface1,MyInterface2{
        public abstract void method3();
    }
    //子接口的实现类,定义的四个方法都需要重写
    public class MyInterfaceImp implements MyInterface{
        @Override
        public void method3() {
    
        }
    
        @Override
        public void method1() {
    
        }
    
        @Override
        public void method2() {
    
        }
    
        @Override
        public void method1Common() {
    
        }
    }
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1024386.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号