/* * 在任何版本中的Java,接口都能定义抽象方法 * 格式 * public abstract 返回值类型 方法名称 (参数列表) * 注意事项: * 1.接口当中的抽象方法,修饰符必须是两个固定的关键字:public abstract * 2.这两个关键字修饰符,可以选择性地忽略*/
public interface Myinterface { //这是一个抽象方法 public abstract void method(); //这也是抽象方法 abstract void methodB(); //这也是抽象方法 public void methodC(); //这也是抽象方法 void methodD(); }
定义实现类
package cn.itcast.demo7; public class Myinterfaceimp implements Myinterface { @Override public void method() { System.out.println("第一个方法"); } @Override public void methodB() { System.out.println("第一个方法"); } @Override public void methodC() { System.out.println("第一个方法"); } @Override public void methodD() { System.out.println("第一个方法"); } }
调用方法
package cn.itcast.demo7; /* * 如何定义一个接口的格式: * public interface 接口名称{// * 接口名称 * } * 接口不能直接使用,必须有一个实现类来实现接口 * 格式: * 1.public class 实现类名称 implements 接口名称{} *2.接口的实现类必须覆盖重写接口中的所有的抽象方法 * 实现:去掉abstract 关键字 加上方法体大括号 * 3.创建实现类的对象,进行使用 * 注意事项 * 如果实现类并没有覆盖重写接口所有的抽象方法,那么这个实现类自己就必须是抽象类 * */ public class Demointerface { public static void main(String[] args) { Myinterfaceimp imp = new Myinterfaceimp(); imp.method(); imp.methodB(); } }
package cn.itcast.demo7; // *从java8 开始,接口里允许定义默认的方法 // * public default 返回值类型 方法名称(参数列表){方法体} // * 备注:接口当中的默认方法,可以解决接口的升级问题 // * */ public interface MyinterfaceDefault { //这是一个抽象方法 public abstract void method(); //这也是抽象方法 abstract void methodB(); public default void methodDefault(){ System.out.println("这是一个新添加的默认方法"); } }
定义实现类:
package cn.itcast.demo7; public class MyinterfaceDefaultimp implements MyinterfaceDefault{ @Override public void method() { System.out.println("实现method方法"); } @Override public void methodB() { System.out.println("实现methodB方法"); } }
调用:
package cn.itcast.demo7; public class Demo2interface { public static void main(String[] args) { MyinterfaceDefaultimp myinterfacedefault = new MyinterfaceDefaultimp(); myinterfacedefault.methodDefault(); myinterfacedefault.method(); myinterfacedefault.methodB(); } }
package cn.itcast.demo7; /* * 我们需要一个共有方法,用来解决两个默认方法之间重复代码的问题 * 但是这个共有方法不应该让实现类使用,应该私有化 * * 解决方法: * 从java9 开始,接口当中允许定义私有方法 * 1.普通私有方法:解决多个默认方法之间重复代码问题 * private 返回值类型 方法名称(参数列表){ * 方法体 * } * 2.静态私有方法:解决多个静态方法之间代码重复问题 * 格式: * private static 返回值类型 方法名称(参数列表){ * 方法体 * } * * * */ public interface Myinterfaceprivate { private void methodC(){ System.out.println("AAA"); System.out.println("BBB"); System.out.println("CCC"); } private static void methodE(){ System.out.println("AAA"); System.out.println("BBB"); System.out.println("CCC"); } public static void methodD(){ System.out.println("methodA 方法 静态方法"); methodE(); } public default void methodA(){ System.out.println("methodA 方法"); methodC(); } public default void methodB(){ System.out.println("methodB 方法"); methodC(); } }
定义实现类:
package cn.itcast.demo7; public class Myinterfaceprivateimp implements Myinterfaceprivate { }
调用方法:
package cn.itcast.demo7; public class Demo3interface { public static void main(String[] args) { Myinterfacestatic.Mystaticmethod(); } }