From 48f8ab1e8d76902ed6ef8a5448413decffee8cf2 Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Tue, 6 Jan 2026 14:29:55 +0800 Subject: [PATCH] =?UTF-8?q?day10-=E6=8E=A5=E5=8F=A3interface-=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E6=96=B9=E6=B3=95=E7=9A=84=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../interface_abstract01/MyInterface.java | 3 +++ .../interface_abstract01/MyInterfaceImpl.java | 5 ++++ .../MyInterfaceImpl1.java | 18 +++++++++++++ .../MyInterfaceImpl2.java | 18 +++++++++++++ .../inmind/interface_default02/Demo02.java | 26 +++++++++++++++++++ .../MyInterfaceDefault.java | 10 +++++++ .../MyInterfaceDefaultImpl1.java | 13 ++++++++++ .../MyInterfaceDefaultImpl2.java | 21 +++++++++++++++ 8 files changed, 114 insertions(+) create mode 100644 day10/src/com/inmind/interface_abstract01/MyInterfaceImpl1.java create mode 100644 day10/src/com/inmind/interface_abstract01/MyInterfaceImpl2.java create mode 100644 day10/src/com/inmind/interface_default02/Demo02.java create mode 100644 day10/src/com/inmind/interface_default02/MyInterfaceDefault.java create mode 100644 day10/src/com/inmind/interface_default02/MyInterfaceDefaultImpl1.java create mode 100644 day10/src/com/inmind/interface_default02/MyInterfaceDefaultImpl2.java diff --git a/day10/src/com/inmind/interface_abstract01/MyInterface.java b/day10/src/com/inmind/interface_abstract01/MyInterface.java index a2be0fb..094f85e 100644 --- a/day10/src/com/inmind/interface_abstract01/MyInterface.java +++ b/day10/src/com/inmind/interface_abstract01/MyInterface.java @@ -29,4 +29,7 @@ public interface MyInterface { public abstract void method();//抽象方法可以设置为私有吗???不行,必须只能是public void method1();//前面会自动加上public abstract + + + void method2(); } diff --git a/day10/src/com/inmind/interface_abstract01/MyInterfaceImpl.java b/day10/src/com/inmind/interface_abstract01/MyInterfaceImpl.java index 0382cc3..dc6f24c 100644 --- a/day10/src/com/inmind/interface_abstract01/MyInterfaceImpl.java +++ b/day10/src/com/inmind/interface_abstract01/MyInterfaceImpl.java @@ -11,4 +11,9 @@ public class MyInterfaceImpl implements MyInterface{ public void method1() { System.out.println("实现类MyInterfaceImpl实现重写了method1方法"); } + + @Override + public void method2() { + + } } diff --git a/day10/src/com/inmind/interface_abstract01/MyInterfaceImpl1.java b/day10/src/com/inmind/interface_abstract01/MyInterfaceImpl1.java new file mode 100644 index 0000000..d579845 --- /dev/null +++ b/day10/src/com/inmind/interface_abstract01/MyInterfaceImpl1.java @@ -0,0 +1,18 @@ +package com.inmind.interface_abstract01; + +public class MyInterfaceImpl1 implements MyInterface{ + @Override + public void method() { + + } + + @Override + public void method1() { + + } + + @Override + public void method2() { + + } +} diff --git a/day10/src/com/inmind/interface_abstract01/MyInterfaceImpl2.java b/day10/src/com/inmind/interface_abstract01/MyInterfaceImpl2.java new file mode 100644 index 0000000..35b3f98 --- /dev/null +++ b/day10/src/com/inmind/interface_abstract01/MyInterfaceImpl2.java @@ -0,0 +1,18 @@ +package com.inmind.interface_abstract01; + +public class MyInterfaceImpl2 implements MyInterface{ + @Override + public void method() { + + } + + @Override + public void method1() { + + } + + @Override + public void method2() { + + } +} 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..bf7b705 --- /dev/null +++ b/day10/src/com/inmind/interface_default02/Demo02.java @@ -0,0 +1,26 @@ +package com.inmind.interface_default02; +/* +接口是可以进行接口升级,添加功能,之前添加功能方法只能添加抽象方法,导致所有的实现类都必须要修改,这样非常麻烦 +为了解决该问题,在jdk8中添加了默认方法来解决。 + +默认方法的定义方法: +public default void method1(){ + +}; +------------------------------------------------------ +接口中默认方法的使用步骤: +1.接口是不能创建对象的 +2.必须使用一个类实现该接口 +3.创建实现类的对象才能调用接口中的默认方法 +4.在接口的实现类中,可以根据对应的需求,可以选择重写或不重写接口中的默认方法 + (MyInterfaceDefault.super.method3();!!!!沿用父类功能) + + */ +public class Demo02 { + public static void main(String[] args) { + MyInterfaceDefaultImpl1 impl1 = new MyInterfaceDefaultImpl1(); + impl1.method3(); + MyInterfaceDefaultImpl2 impl2 = new MyInterfaceDefaultImpl2(); + impl2.method3(); + } +} diff --git a/day10/src/com/inmind/interface_default02/MyInterfaceDefault.java b/day10/src/com/inmind/interface_default02/MyInterfaceDefault.java new file mode 100644 index 0000000..90f8c82 --- /dev/null +++ b/day10/src/com/inmind/interface_default02/MyInterfaceDefault.java @@ -0,0 +1,10 @@ +package com.inmind.interface_default02; + +public interface MyInterfaceDefault { + public abstract void method1(); + void method2(); + + public default void method3(){ + System.out.println("这是MyInterfaceDefault接口升级的method3的默认功能"); + }; +} diff --git a/day10/src/com/inmind/interface_default02/MyInterfaceDefaultImpl1.java b/day10/src/com/inmind/interface_default02/MyInterfaceDefaultImpl1.java new file mode 100644 index 0000000..b5b953e --- /dev/null +++ b/day10/src/com/inmind/interface_default02/MyInterfaceDefaultImpl1.java @@ -0,0 +1,13 @@ +package com.inmind.interface_default02; + +public class MyInterfaceDefaultImpl1 implements MyInterfaceDefault{ + @Override + public void method1() { + + } + + @Override + public void method2() { + + } +} diff --git a/day10/src/com/inmind/interface_default02/MyInterfaceDefaultImpl2.java b/day10/src/com/inmind/interface_default02/MyInterfaceDefaultImpl2.java new file mode 100644 index 0000000..cf49edb --- /dev/null +++ b/day10/src/com/inmind/interface_default02/MyInterfaceDefaultImpl2.java @@ -0,0 +1,21 @@ +package com.inmind.interface_default02; + +public class MyInterfaceDefaultImpl2 implements MyInterfaceDefault{ + @Override + public void method1() { + + } + + @Override + public void method2() { + + } + + @Override + public void method3(){ + //沿用接口的默认功能 + MyInterfaceDefault.super.method3(); + //扩展一些新的功能 + System.out.println("MyInterfaceDefaultImpl2不满意默认功能,重写实现了method3的新的功能"); + }; +}