(如有问题,欢迎各位大佬批评指正)
备注:
接口包含的内容
package md.chenmo;
public interface MyInterFaceAbstract {
//这是一个抽象方法
public abstract void method1();
//这也是抽象方法
abstract void method2();
//这也是抽象方法
void method3();
}
注意事项
package md.chenmo.demo01;
import md.chenmo.MyInterFaceAbstract;
public class MyInterFaceAbstractImpl implements MyInterFaceAbstract {
@Override
public void method1() {
System.out.println("这是第一个抽象方法");
}
@Override
public void method2() {
System.out.println("这是第二个抽象方法");
}
@Override
public void method3() {
System.out.println("这是第三个抽象方法");
}
}
package md.chenmo.demo01;
public class Demo01 {
public static void main(String[] args) {
MyInterFaceAbstractImpl myimpl = new MyInterFaceAbstractImpl();
myimpl.method1();
myimpl.method2();
myimpl.method3();
}
}
package md.chenmo.demo01;
public interface MyInterFace {
//接口的抽象方法
public abstract void method4 ();
//接口的默认方法
public default void method5() {
System.out.println("我是接口的默认方法");
}
default void method6(){
System.out.println("我也是结构默认方法");
}
}
package md.chenmo.demo01;
public class MyInterFace1 implements MyInterFace {
@Override
public void method4(){
System.out.println("我是覆盖重写方法");
}
//接口的默认方法可以被实现类覆盖重写
@Override
public void method5(){
System.out.println("我是覆盖重写之后的接口方法");
}
}
package md.chenmo.demo01;
public class Demo02 {
public static void main(String[] args) {
MyInterFace1 myInterFace1 = new MyInterFace1();
myInterFace1.method4();
myInterFace1.method5();
myInterFace1.method6();
}
}
提示: 就将abstract或者default换成abstract即可
注意事项
package md.chenmo.demo01;
public interface MyInterFaceStatic {
//定义接口的抽象方法
public abstract void method1();
//定义接口的静态方法
public static void method2(){
System.out.println("我是接口的静态方法");
}
}
package md.chenmo.demo01;
public class MyInterFaceIm implements MyInterFaceStatic{
@Override
public void method1() {
System.out.println("我是接口实例类的覆盖重写方法");
}
}
package md.chenmo.demo01;
public class Demo03Static {
public static void main(String[] args) {
MyInterFaceIm myInt = new MyInterFaceIm();
//通过类实例对象来调用实例类的覆盖重写方法
myInt.method1();
//通过类实例对象来调用接口的静态方法(错误)
// myInt.method2();
//直接通过接口调用接口的静态方法
MyInterFaceStatic.method2();
}
}
问题描述
解决方法:
定义一个接口
public interface MyInterFacePrivateA {
//定义接口的抽象方法
// public abstract void eat();
//定义接口的静态方法
public static void sleep(){
System.out.println("我是接口的睡觉静态方法");
}
//为什么要定义接口的私有方法
public static void methodA(){
System.out.println("我是静态方法A");
// System.out.println("AAAA");
// System.out.println("bbbb");
// System.out.println("cccc");
methodC();
}
public static void methodB(){
System.out.println("我是接口的静态方法B");
// System.out.println("AAAA");
// System.out.println("bbbb");
// System.out.println("cccc");
methodC();
}
private static void methodC(){
System.out.println("AAAA");
System.out.println("bbbb");
System.out.println("cccc");
}
}
访问尝试访问接口中的私有静态方法
package md.chenmo.demo01;
public class MyInterDefault{
public static void main(String[] args) {
MyInterFacePrivateA.methodA();
MyInterFacePrivateA.methodB();
// MyInterFacePrivateA.methodC();
}
}
格式
pubilc static final 数据类型 常量名称 = 数据值
注意:
一旦使用了final关键字修饰,说明不可改变。
注意事项
创建一个接口定义一个常量
public interface MyInterfaceConst {
public static final int NUM = 10;
}
使用接口的常量
public class Demo04 {
public static void main(String[] args) {
//使用接口中的变量
System.out.println(MyInterfaceConst.NUM);
}
}
在java9+版本中,接口可以有以下内容