以下三个文件存在于同一个包下:

  1. 定义接口Dome_Interface.java
package cn.xxmmqg.Interface;

// 接口不能直接使用,必须有一个“实现类”来实现该接口
// 接口的实现类必须覆盖接口中的所有抽象方法,如果没有全部覆盖重写,则实现类必须是抽象方法
public interface Dome_Interface {
// ==============抽象方法=================
// 任何版本的java都可以定义抽象方法
// 抽象方法的修饰符必须是 public abstract,且可以选择性省略
public abstract void methodAbs1();
public void methodAbs2();
abstract void methodAbs3();
void methodAbs4();
// 以上都是抽象方法 // ==============默认方法=================
// 默认方法通过default修饰,而public 可以省略,但是【不能是其他的】
// 默认方法可以通过【实现类】使用,而不需要被实现类重写
public default void methodDef(){
System.out.println("默认方法运行");
}
// 接口中可以定义默认方法,用于解决接口升级问题
// 将新添加的接口功能定义成默认方法,那么已投入使用的实现类不需要改变也可使用该功能,实现类中也可以对其进行覆盖重写 // ==============静态方法=================
public static void methodSta(){
System.out.println("接口的静态方法");
} // ==============私有方法=================
// 定义私有方法,用于解决多个【默认方法】代码重复的问题
// 如果私有方法中加上修饰符static,就能解决多个【静态方法】代码重复问题
private void methodPri(){
System.out.println("重复代码运行");
}
public default void methodDef1(){
System.out.print("methodDef1运行 ");
this.methodPri();
}
public default void methodDef2(){
System.out.print("methodDef2运行 ");
this.methodPri();
} // ==============成员变量=================
// 接口中定义成员变量,但是必须使用 public static final三个关键字进行修饰,且可以选择性省略
// 效果上看,就是接口的常量,以下定义方法中都是【常量】
// 接口中的常量必须进行赋值
public static final int NUM_1 = 10; // 常量一般使用全大写字母加下划线
int NUM_2 = 11;
public int NUM_3 = 12;
static int NUM_4 = 13;
final int NUM_5 = 14;
}
  1. 定义接口的实现类Dome_Implement.java
package cn.xxmmqg.Interface;

public class Dome_Implement implements Dome_Interface{
// 覆盖重写抽象方法
@Override
public void methodAbs1() {
System.out.println("Abs1");
}
@Override
public void methodAbs2() {
System.out.println("Abs2");
}
@Override
public void methodAbs3() {
System.out.println("Abs3");
}
@Override
public void methodAbs4() {
System.out.println("Abs4");
}
}
  1. 主函数Dome_Main.java
package cn.xxmmqg.Interface;

public class Dome_Main {

    public static void main(String[] args) {

        Dome_Implement impl = new Dome_Implement();

        System.out.println("--------------------");
impl.methodAbs1();
impl.methodAbs2();
impl.methodAbs3();
impl.methodAbs4(); System.out.println("--------------------");
// 调用默认方法,如果实现类中没有定义,则向上找接口的
impl.methodDef();
impl.methodDef1();
impl.methodDef2(); System.out.println("--------------------");
// 调用静态方法
// impl.methodSta(); // 不能通过接口实现类的对象来调用接口的静态方法,因为一个类可以实现多个接口,这些接口的静态方法有可能重名
Dome_Interface.methodSta(); // 正确调用接口静态方法的方法 System.out.println("--------------------");
// 访问接口中的常量
System.out.println(Dome_Interface.NUM_1);
System.out.println(Dome_Interface.NUM_3);
}
}

主函数运行结果:

--------------------
Abs1
Abs2
Abs3
Abs4
--------------------
默认方法运行
methodDef1运行 重复代码运行
methodDef2运行 重复代码运行
--------------------
接口的静态方法
--------------------
10
12

『Java』接口的使用方法的更多相关文章

  1. 『Java』String类使用方法

    Java中的字符串 java.lang.String类表示字符串类,Java程序中所有字符串文字都可以看作实现该类的实例. 特点: 字符串不可变:字符串的值在创建后不能在发生改变 public cla ...

  2. 『Java』StringBuilder类使用方法

    String类存在的问题 String类的底层是一个被final修饰的byte[],不能改变. 为了解决以上问题,可以使用java.lang.StringBuilder类. StringBuilder ...

  3. 『Java』Collection接口 Collections类

    接口Collection public interface Collection<E>定义了所有单列集合中共性的方法,所有的单列集合都可以使用共性方法. Collection的常用子接口有 ...

  4. 『Java』List Set

    观前提醒:本文内容多为入门时的学习笔记,笔记内容有些混乱!!! | | | | | | | | | | | | 泛型只能是引用类型,不能是基本类型. 如果希望集合中存储的是基本类型数据,需要基本类型对 ...

  5. 『GoLang』接口

    接口是什么 Go 语言不是一种 "传统" 的面向对象编程语言:它里面没有类和继承的概念. 但是 Go 语言里有非常灵活的 接口 概念,通过它可以实现很多面向对象的特性.接口提供了一 ...

  6. 『Java』成员内部类 匿名内部类

    成员内部类 成员方法类是定义在一个类中的方法外的类,例如: public class Outer{ // 外部类 class Inner { // 内部类 // 内部类成员 } // 外部类成员 } ...

  7. 『GoLang』结构体与方法

    结构体 结构体类型 Go 通过结构体的形式支持用户自定义类型,或者叫定制类型. Go 语言结构体是实现自定义类型的一种重要数据类型. 结构体是复合类型(composite types),它由一系列属性 ...

  8. 『Java』数组

    在学习数组之前先学习java.util.Arrays类中的一个静态方法Arrays.toString(). 该方法可以将传入的数组格式化为一个字符串,便于我们查看数组内容,例如: import jav ...

  9. java interface接口的传值方法

    A 类 package interface_test; public class A { private IPresenter ip; public A(IPresenter ip) { this.i ...

随机推荐

  1. 33、jQuery介绍

    33.1.jQuery是什么: (1)jQuery由John Resig创建,至今已吸引了来自世界各地的众多 javascript 高手加入其team. (2)jQuery是继prototype之后又 ...

  2. Docker:Linux离线安装docker

    docker离线下载路径 docker所有版本:https://download.docker.com/linux/static/stable/ 离线安装 1.解压 #解压tar包 tar -xvf ...

  3. vim编辑器使用方法(相关指令)

    1.跳到文本的最后一行:按"G",即"shift+g" 2.跳到最后一行的最后一个字符 : 先重复1的操作即按"G",之后按"$& ...

  4. KeepAlive详解(转)

    一.什么是KeepAlive? 首先,我们要明确我们谈的是TCP的 KeepAlive 还是HTTP的 Keep-Alive.TCP的KeepAlive和HTTP的Keep-Alive是完全不同的概念 ...

  5. Java | 标识符 & 关键字

    标识符是什么? 标识符 标识符是指在程序中,我们自己定义的内容.比如类的名字.方法的名字和变量的名字等等,都是标识符.在我们写的第一个程序当中,我们给类起名叫做Hello 也叫做标识符. 命名规则 标 ...

  6. java基础---泛型机制

    从java5 开始增加泛型机制,用于明确集合中可以放入的元素类型,只在编译时期有效,运行时不区分是什么类型. 格式:<数据类型> 泛型的本质是参数化类型,让数据类型作为参数传递,E相当于形 ...

  7. 盘点linux操作系统中的10条性能调优命令,一文搞懂Linux系统调优

    原文链接:猛戳这里 性能调优一直是运维工程师最重要的工作之一,如果您所在的生产环境中遇到了系统响应速度慢,硬盘IO吞吐量异常,数据处理速度低于预期值的情况,又或者如CPU.内存.硬盘.网络等系统资源长 ...

  8. uni-app中当uni.navigateTo传的参数为object时,通过传递的不同参数,在显示单页面内通过v-if判断显示出对应的内容(可实现多页面效果)

    通过uni-app中当uni.navigateTo传的参数为object时,通过传递的不同参数,在显示单页面内通过v-if判断显示出对应的内容(可实现多页面效果) 起始页跳转到对应页面,并传递参数(o ...

  9. Swift-使用transform 实现重复平移动画

    摘要 要实现一组重复的动画,本质上就是找到动画开始点.结束点.在动画结束的时候,触发开始点,持续这样的动作. 这里面要梳理的逻辑就是1.触发开始点和2.监听动画结束点.这两个逻辑是实现重复动画的基础. ...

  10. 前端开发入门到进阶第三集【sublime 的package control ——install package报错】

    参考:https://www.cnblogs.com/ae6623/p/5338049.html,解决2帮我解决问题. 解决Sublime包管理package control 报错 There are ...