接口2

简介: 接口2

接口2

JDK8及以后:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法


知识点1:接口中定义的静态方法中,只能通过接口来调用。


知识点2:通过类的对象,可以调用接口中的默认方法

如果实现类重写了接口中的默认方法,调用时,仍然调用的是重写后的方法


知识点3:如果子类(或实现类)继承的父类和实现的接口中声明了同名同参的默认方法,那么子类在没有重写此方法的情况下,默认调用的是父类中同名同参的方法。–>类优先原则


知识点4:如果实现类实现了多个接口,而这多个接口中定义了同名同参的默认方法,那么实现类在没有重写此方法的情况下,报错。–>接口冲突。

这就需要我们在实现类中重写此方法。


知识点5:如何在子类(或实现类)的方法中调用父类和接口中被重写的方法

public void myMethod() {

method3();//调用自己定义重写的方法

super.method3();//调用父类中声明的方法

//调用接口中默认方法

CompareA.super.method3();

CompareB.super.method3();

}

在B站学习java写的代码

代码如下

CompareA接口

package com.day0131_4;
/*
 * JDK8及以后:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法
 *  
 */
public interface CompareA {
  //静态方法
  public static void method1() {
    System.out.println("CompareA:北京");
  }
  //默认方法
  public default void method2() {
    System.out.println("CompareA:上海");
  }
  default void method3() {
    System.out.println("CompareA:上海");
  }
}

CompareB接口

package com.day0131_4;
public interface CompareB {
  default void method3() {
    System.out.println("CompareB:北京");
  }
}

SuperClass类

package com.day0131_4;
public class SuperClass {
  public void method3() {
    System.out.println("SuperClass:北京");
  }
}

SubClassTest类

package com.day0131_4;
public class SubClassTest {
  public static void main(String[] args) {
    SubClass s= new SubClass();
//    s.method1();//The method method1() is undefined for the type  SubClass
//    SubClass.method1();//The method method1() is undefined for the type  SubClass
    //知识点1:接口中定义的静态方法中,只能通过接口来调用。
    CompareA.method1();
    //知识点2:通过类的对象,可以调用接口中的默认方法
    //如果实现类重写了接口中的默认方法,调用时,仍然调用的是重写后的方法
    s.method2();
    //知识点3:如果子类(或实现类)继承的父类和实现的接口中声明了同名同参的默认方法,
    //那么子类在没有重写此方法的情况下,默认调用的是父类中同名同参的方法。--类优先原则
    s.method3();
    //知识点4:如果实现类实现了多个接口,而这多个接口中定义了同名同参的默认方法,
    //那么实现类在没有重写此方法的情况下,报错。-->接口冲突。
    //这就需要我们在实现类中重写此方法。
    SubClass1 s1= new SubClass1();
    s1.method3();
  }
}
class SubClass extends SuperClass implements CompareA,CompareB{
  public void method2() {
    System.out.println("SubClass:上海");
  }
  //知识点5:如何在子类(或实现类)的方法中调用父类和接口中被重写的方法
  public void myMethod() {
    method3();//调用自己定义重写的方法
    super.method3();//调用父类中声明的方法
    //调用接口中默认方法
    CompareA.super.method3();
    CompareB.super.method3();
  }
}
class SubClass1  implements CompareA,CompareB{
  public void method2() {
    System.out.println("SubClass1:上海");
  }
  public void method3() {
    System.out.println("SubClass1:深圳");
  }
}
相关文章
|
1月前
接口
使用使用接口的时候,需要注意: 1.接口是没有静态代码块或者构造方法的。 2,一个类只能继承一个,但是一个类可以同时实现多个接口。 格式: public class MyInterfaceImpl implements MyInterfaceA,MyInterfaceB {} 3.如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。 4、如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。 5如果实现类锁实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进 行覆善重写。 6.一个类如果直接父类当中的方法,和接口当中的
18 1
|
1月前
|
前端开发 API C#
C# 接口
C# 接口
24 1
|
1月前
|
存储 安全 Java
AVAList接口
AVAList接口
15 1
|
Java Maven
一文了解ConfigurationConditon 接口
在了解ConfigurationCondition 接口之前,先通过一个示例来了解一下@Conditional 和 Condition。
53 0
485通讯接口与232接口的区别
485通讯接口与232接口的区别
2077 1
|
10月前
|
人工智能 弹性计算 Cloud Native
平头哥杨平超:倚天CPU架构以及产品特性介绍
2023年8月8日,【倚天实例迁移课程】首节课程《倚天CPU架构以及产品特性介绍》正式上线,由平头哥倚天解决方案架构师杨平超主讲,内容涵盖:倚天710芯片概述;倚天710的主要特点;倚天710应用落地介绍,本期节目也在阿里云官网、阿里云微信视频号、阿里云钉钉视频号、InfoQ官网、阿里云开发者微信视频号、阿里云创新中心直播平台&微信视频号同步播出。
平头哥杨平超:倚天CPU架构以及产品特性介绍
|
C++
使用C++的接口
#include "stdafx.h"using namespace std;//abstract interfacesinterface IX...{    virtual void _stdcall Fx1()=0;    virtual void _stdcall Fx2()=0;};interface IY...{    virtual void _stdcall Fy1()=0
877 0
|
10月前
|
存储 人工智能 大数据
向量数仓助力大模型应用落地三部曲
在第14届中国数据库技术大会(DTCC 2023)上,阿里云原生数据仓库 AnalyticDB PostgreSQL 版提出了向量数仓能力和解决方案,助力企业在大模型时代实现数据架构升级。根据真实用户落地经验,总结出企业落地大模型应用的三个阶段。下文将详述大模型应用落地不同阶段数据架构的设计与思考。
27862 14
向量数仓助力大模型应用落地三部曲
|
10月前
|
存储 Java 测试技术
迄今为止最完整的DDD实践
对于一个架构师来说,在软件开发中如何降低系统复杂度是一个永恒的挑战。
21408 8
|
JavaScript
46、EventTarget 接口
DOM 节点的事件操作(监听和触发),都定义在EventTarget接口
122 0