Java基础复习 Day 13

本文详细介绍了Java中的接口概念,包括接口的定义、使用步骤、常量、抽象方法、默认方法和静态方法。重点讲述了Java8引入的默认方法和静态方法,以及它们在接口升级和实现类中的应用。此外,还提到了接口间的多继承以及相关注意事项。
摘要由CSDN通过智能技术生成

Java基础复习 Day 13

1. 接口

  • 接口就是不同类之间要符合一个公共规范,只要符合标准,谁都可以使用

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

  • interface接口定义格式

    public interface 接口名称{

    //接口内容

    }

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

  • 接口内容:

    • JAVA8

      1.常量

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

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

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

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

      2.抽象方法

      3.默认方法

      4.静态方法

      //定义一个接口
      /*
      * 抽象方法定义格式:
      * public abstract 返回值 方法名称(参数列表);
      * 注意事项:
      *1.接口当中的抽象方法,修饰符必须是两个固定的关键字:public abstract
      *2.这两个关键字可以选择性省略
      *
      * 接口的使用步骤:
      * 1.接口不能直接调用,必须有一个实现类去实现该接口。
      * 关键字:implements
      * 2,实现类必须覆写所实现interface中的所有抽象方法
      * 3.创建实体类对象,进行使用
      *
      * 注意事项:
      * 如果实现类没有覆盖重写接口所有的抽象方法,那么这个类必须是抽象类
      * 
      * */
      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() {
    
        }
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值