From b0993331231bd0da50bf05ab3329e14ecd50b9a0 Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Mon, 27 Jul 2026 10:21:45 +0800 Subject: [PATCH] =?UTF-8?q?day10-=E6=8E=A5=E5=8F=A3=E7=9A=84=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E6=96=B9=E6=B3=95=E7=9A=84=E5=AE=9A=E4=B9=89=E5=92=8C?= =?UTF-8?q?=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Demo01.java | 2 +- .../MyInterface.java | 2 +- .../MyInterfaceImpl.java | 2 +- .../inmind/interface_default02/Demo02.java | 25 +++++++++++++++++++ .../interface_default02/MyInterface.java | 23 +++++++++++++++++ .../interface_default02/MyInterfaceImpl1.java | 23 +++++++++++++++++ .../interface_default02/MyInterfaceImpl2.java | 19 ++++++++++++++ 7 files changed, 93 insertions(+), 3 deletions(-) rename day10/src/com/inmind/{interface01 => interface_abstract01}/Demo01.java (94%) rename day10/src/com/inmind/{interface01 => interface_abstract01}/MyInterface.java (93%) rename day10/src/com/inmind/{interface01 => interface_abstract01}/MyInterfaceImpl.java (86%) create mode 100644 day10/src/com/inmind/interface_default02/Demo02.java create mode 100644 day10/src/com/inmind/interface_default02/MyInterface.java create mode 100644 day10/src/com/inmind/interface_default02/MyInterfaceImpl1.java create mode 100644 day10/src/com/inmind/interface_default02/MyInterfaceImpl2.java diff --git a/day10/src/com/inmind/interface01/Demo01.java b/day10/src/com/inmind/interface_abstract01/Demo01.java similarity index 94% rename from day10/src/com/inmind/interface01/Demo01.java rename to day10/src/com/inmind/interface_abstract01/Demo01.java index 01344eb..b6f214d 100644 --- a/day10/src/com/inmind/interface01/Demo01.java +++ b/day10/src/com/inmind/interface_abstract01/Demo01.java @@ -1,4 +1,4 @@ -package com.inmind.interface01; +package com.inmind.interface_abstract01; /* 接口的抽象方法的使用步骤: 1.接口不能创建对象的,它没有构造方法 diff --git a/day10/src/com/inmind/interface01/MyInterface.java b/day10/src/com/inmind/interface_abstract01/MyInterface.java similarity index 93% rename from day10/src/com/inmind/interface01/MyInterface.java rename to day10/src/com/inmind/interface_abstract01/MyInterface.java index 172a6a3..299c8b7 100644 --- a/day10/src/com/inmind/interface01/MyInterface.java +++ b/day10/src/com/inmind/interface_abstract01/MyInterface.java @@ -1,4 +1,4 @@ -package com.inmind.interface01; +package com.inmind.interface_abstract01; /* 接口就是生活中的规范,规则 定义格式 diff --git a/day10/src/com/inmind/interface01/MyInterfaceImpl.java b/day10/src/com/inmind/interface_abstract01/MyInterfaceImpl.java similarity index 86% rename from day10/src/com/inmind/interface01/MyInterfaceImpl.java rename to day10/src/com/inmind/interface_abstract01/MyInterfaceImpl.java index 3f27772..bc2ca61 100644 --- a/day10/src/com/inmind/interface01/MyInterfaceImpl.java +++ b/day10/src/com/inmind/interface_abstract01/MyInterfaceImpl.java @@ -1,4 +1,4 @@ -package com.inmind.interface01; +package com.inmind.interface_abstract01; public class MyInterfaceImpl implements MyInterface{ @Override diff --git a/day10/src/com/inmind/interface_default02/Demo02.java b/day10/src/com/inmind/interface_default02/Demo02.java new file mode 100644 index 0000000..5d8662a --- /dev/null +++ b/day10/src/com/inmind/interface_default02/Demo02.java @@ -0,0 +1,25 @@ +package com.inmind.interface_default02; +/* +JDK8时提供,接口的默认方法 + +接口的默认方法的使用步骤: +1.接口不能创建对象的,它没有构造方法 +2.定义一个实现类,实现该接口,并实现接口中的所有的抽象方法 + public class MyInterfaceImpl(实现类) implements MyInterface(接口){ +3.创建该接口的实现类的对象,调用接口的抽象方法和默认方法 +4.在接口的实现类中,可以根据对应的需求,选择性重写,或不重写接口中的默认方法,也可以沿用功能(接口.super.默认方法名)(重点) + */ +public class Demo02 { + public static void main(String[] args) { + //创建接口的实现类的对象1 + MyInterfaceImpl1 myInterface1 = new MyInterfaceImpl1(); + myInterface1.method1(); + myInterface1.method2(); + myInterface1.method3(); + //创建接口的实现类的对象2 + MyInterfaceImpl2 myInterface2 = new MyInterfaceImpl2(); + myInterface2.method1(); + myInterface2.method2(); + myInterface2.method3(); + } +} diff --git a/day10/src/com/inmind/interface_default02/MyInterface.java b/day10/src/com/inmind/interface_default02/MyInterface.java new file mode 100644 index 0000000..d4efe60 --- /dev/null +++ b/day10/src/com/inmind/interface_default02/MyInterface.java @@ -0,0 +1,23 @@ +package com.inmind.interface_default02; +/* + 第一个版本的规则(接口),有一个固定功能method + 第二个版本中,需要增加功能 + + 接口是可以升级的,添加新功能,之前添加功能只能通过抽象方法,导致所有的实现类都报错,这样非常麻烦。 + 为了解决该问题,jdk8提供了默认方法来解决 + + 接口中的默认方法的定义格式: + public default 返回值类型 方法名(参数列表){ + 默认实现 + } + + */ +public interface MyInterface { + //十年之前的规范 + public abstract void method1(); + void method2(); + //十年之后增加新的规范了,就应该增加默认方法即可 + public default void method3(){ + System.out.println("接口中的新增的默认功能"); + }; +} diff --git a/day10/src/com/inmind/interface_default02/MyInterfaceImpl1.java b/day10/src/com/inmind/interface_default02/MyInterfaceImpl1.java new file mode 100644 index 0000000..3a79832 --- /dev/null +++ b/day10/src/com/inmind/interface_default02/MyInterfaceImpl1.java @@ -0,0 +1,23 @@ +package com.inmind.interface_default02; + +public class MyInterfaceImpl1 implements MyInterface{ + @Override + public void method1() { + System.out.println("实现类1中method1方法"); + } + + @Override + public void method2() { + System.out.println("实现类1中method2方法"); + } + + //ctrl+o + + + @Override + public void method3() { + MyInterface.super.method3();//沿袭(沿用)接口中的默认功能 + //也可以选择性扩展增强 + System.out.println("实现类1扩展增强了method3"); + } +} diff --git a/day10/src/com/inmind/interface_default02/MyInterfaceImpl2.java b/day10/src/com/inmind/interface_default02/MyInterfaceImpl2.java new file mode 100644 index 0000000..dcbb45e --- /dev/null +++ b/day10/src/com/inmind/interface_default02/MyInterfaceImpl2.java @@ -0,0 +1,19 @@ +package com.inmind.interface_default02; + +public class MyInterfaceImpl2 implements MyInterface{ + @Override + public void method1() { + System.out.println("实现类2中method1方法"); + } + + @Override + public void method2() { + System.out.println("实现类2中method2方法"); + } + + @Override + public void method3() { + //直接重新实现method3的全部功能 + System.out.println("实现类2直接重新实现了method3的功能"); + } +}