Java基础之接口(interface)

tech2022-12-19  114

文章目录

1.创建InterA接口2.创建InterC接口3.创建InterD接口4.创建InterB接口5.创建测试类Test运行结果:

接口 :实现多继承机制

格式:

[修饰符] interface 接口名[extends 父接口名列表]

{

​ 常量数据成员声明

​ 方法声明

}

修饰符:public和默认(public 修饰的接口是公共接口,可以被所有的类和接口使用;默认修饰符的接口只能被同一个包中的其他类和接口使用。)

父接口列表:接口具有继承性。多个父接口之间用逗号隔开。

常量数据成员声明:默认使用 public static final修饰,接口中的数据成员都是用final修饰的常量。(用大写字母命名),必须对数据成员***初始化***。

方法声明:可以定义静态方法,默认方法,抽象方法

静态方法:以通过接口名直接调用,不需要在实现子类重写.默认方法:通过子类对象调用,一般默认方法无实现,子类可以重写,也可以不重写。

接口不能创建对象,没有构造方法

1.创建InterA接口

package InterfaceDemo; public interface InterA { // 常量数据成员----默认public static final修饰,初始化。 String name="Jim"; // 方法声明----默认pulic abstract修饰,不实例化。 public void eat(); // 静态方法----public static修饰 public static void teststatic() { System.out.println("接口中static修饰的静态方法: teststatic"); } // 默认方法-----public default修饰 public default void testdefault() { System.out.println("接口中default修饰的默认方法: testdefault"); } }

2.创建InterC接口

package InterfaceKey; public interface InterC { //方法声明----默认pulic abstract修饰,不实例化。 public void drink(); }

3.创建InterD接口

package InterfaceKey; public interface InterD { //方法声明----默认pulic abstract修饰,不实例化。 public void play(); }

4.创建InterB接口

package InterfaceKey; /* * 接口可以实现多继承机制 * * */ public interface InterB extends InterC,InterD { //常量数据成员----默认public static final修饰,初始化。 int age=21; //方法声明----默认pulic abstract修饰,不实例化。 public void sleep(); }

5.创建测试类Test

implements 关键字是实现接口的,一个类可以调用多个接口,用逗号隔开

package InterfaceKey; /* * * 一个类可以实现多个接口 * 但是这个类要么是抽象类,要么重写实现接口中所有的方法。 * * */ public class Test implements InterA,InterB { @Override public void drink() { System.out.println("Test中重写的drink()"); } @Override public void play() { System.out.println("Test中重写的play()"); } @Override public void sleep() { System.out.println("Test中重写的sleep()"); } @Override public void eat() { System.out.println("Test中重写的eat()"); } // main方法测试 public static void main(String[] args) { // 接口中的静态方法可以通过接口名直接访问 // 子类中不需要重写接口中的静态方法 InterA.teststatic(); // 数据成员也可以通过接口名直接访问 System.out.println("通过接口名直接访问数据成员name:"+InterA.name); System.out.println("通过接口名直接访问数据成员age:"+InterB.age); System.out.println("-------------------------"); // 创建此类对象 Test test = new Test(); // 调用方法 test.drink(); test.eat(); test.testdefault();//默认方法通过对象名调用 // test.teststatic(); 接口中的静态方法,不能通过对象名调用,需要通过接口名调用InterA.teststatic(); System.out.println(test.name);//接口中的静态常量数据成员可以通过对象名访问,系统提示,通过接口名调用更好 System.out.println("---------------------"); // 通过父接口名创建对象(多态:编译看左边,运行看右边) InterA inter = new Test(); // 调用方法 inter.eat(); inter.testdefault(); // inter.teststatic();接口中的静态方法,不能通过对象名调用 System.out.println(inter.name);//系统提示,通过接口名调用更好 } }

运行结果:

接口中static修饰的静态方法: teststatic 通过接口名直接访问数据成员name:Jim 通过接口名直接访问数据成员age:21 ------------------------- Test中重写的drink() Test中重写的eat() 接口中default修饰的默认方法: testdefault Jim --------------------- Test中重写的eat() 接口中default修饰的默认方法: testdefault Jim
最新回复(0)