直接先上代码 package practice; public interface A ...接口A有个方法getName(),接口B继承接口A,不用复写接口A的方法,写接口B自己的东西(业务)即可,当一个类C去...接口继承接口 就类似分级目录,梳理层次结构
直接先上代码
package practice; public interface A {	public void getName(); }package practice; public interface B extends A {	public void getUser(); }package practice; public class C implements B {	@Override	public void getName()	{	// TODO Auto-generated method stub	}	@Override	public void getUser()	{	// TODO Auto-generated method stub	} }
关系梳理:
接口A有个方法getName(),接口B继承接口A,不用复写接口A的方法,写接口B自己的东西(业务)即可,当一个类C去继承B接口的时候,是需要复写两个接口中的方法的实现的——语法层
意义:
举个都知道的东西——书。接口就是一种高度的抽象,直白点就是某种类型的行为,就是为了通用方法、一个上级接收不同下级的实例,去做各自的事情。
《语文》——此处的接口A课本第一章——接口B具体的课文——类C
接口继承接口 就类似分级目录,梳理层次结构
一接口的继承 1点睛 接口支持多继承,一个接口...一个接口继承多个父接口时,多个父接口排在extends关键字之后。 2代码 interface interfaceA { int PROP_A = 5; void testA(); } interface interfaceB { i...
一接口的继承
1点睛
接口支持多继承,一个接口可以有多个父接口,子接口扩展某个父接口,将会获得父接口里定义的所有抽象方法、常量。
一个接口继承多个父接口时,多个父接口排在extends关键字之后。
2代码
interface interfaceA { int PROP_A = 5; void testA(); } interface interfaceB { int PROP_B = 6; void testB(); } interface interfaceC extends interfaceA, interfaceB { int PROP_C = 7; void testC(); } public class InterfaceExtendsTest { public static void main(String[] args) { System.out.println(interfaceC.PROP_A); System.out.println(interfaceC.PROP_B); System.out.println(interfaceC.PROP_C); } }
3运行
4说明
interfaceC接口继承了interfaceA和interfaceB,所以interfaceC中获得了它们的常量,因此在main()方法中看到通过interfaceC来访问PROP_A、PROP_B、PROP_C常量。
二使用接口
1点睛
接口不能用于创建实例,但接口可以用于声明引用类型变量。但这个引用类型的变量必须引用到其实现类的对象。接口的主要用途就是被实现类实现。接口主要有如下用途。
定义变量,也可用于进行强制类型转换。
调用接口中定义的常量。
被其他类实现。
一个类可以实现一个或多个接口,继承使用extends关键字,实现则使用implements关键字。一个类可以实现多个接口,这是Java为单继承灵活性不足所做的补充。
一个类实现一个或多个接口之后,这个类必须完全实现这些接口里所定义的全部抽象方法(也就是重写这些抽象方法);否则,该类将保留从父接口那里继承到的抽象方法,该类也必须定义成抽象类。
2代码
interface Output { // 接口里定义的成员变量只能是常量 int MAX_CACHE_LINE = 50; // 接口里定义的普通方法只能是public的抽象方法 void out(); void getData( String msg ); // 接口中定义默认方法,需要使用default修饰 default void print( String... msgs ) { for (String msg : msgs) { System.out.println(msg); } } // 接口中定义默认方法,需要使用default修饰 default void test() { System.out.println("默认的test()方法"); } // 接口中定义类方法、需要使用static修饰 static String staticTest() { return "Class method"; } } // 定义一个Product接口 interface Product { int getProduceTime(); } // 让Printer类实现Output和Product接口 public class Printer implements Output , Product { private String[] printData = new String[MAX_CACHE_LINE]; // 用以记录当前需打印的作业数 private int dataNum = 0; public void out() { // 只要还有作业,继续打印 while(dataNum > 0) { System.out.println("打印机打印:" + printData[0]); // 把作业队列整体前移一位,并将剩下的作业数减1 System.arraycopy(printData , 1 , printData, 0, --dataNum); } } public void getData(String msg) { if (dataNum >= MAX_CACHE_LINE) { System.out.println("输出队列已满,添加失败"); } else { // 把打印数据添加到队列里,已保存数据的数量加1。 printData[dataNum++] = msg; } } public int getProduceTime() { return 45; } public static void main(String[] args) { // 创建一个Printer对象,当成Output使用 Output o = new Printer(); o.getData("轻量级Java EE企业应用实战"); o.getData("疯狂Java讲义"); o.out(); o.getData("疯狂Android讲义"); o.getData("疯狂Ajax讲义"); o.out(); // 调用Output接口中定义的默认方法 o.print("孙悟空" , "猪八戒" , "白骨精"); o.test(); // 创建一个Printer对象,当成Product使用 Product p = new Printer(); System.out.println(p.getProduceTime()); // 所有接口类型的引用变量都可直接赋给Object类型的变量 Object obj = p; } }
3 运行
打印机打印:轻量级Java EE企业应用实战 打印机打印:疯狂Java讲义 打印机打印:疯狂Android讲义 打印机打印:疯狂Ajax讲义 孙悟空 猪八戒 白骨精 默认的test()方法 45
4说明
Printer实现了 Output接口和 Product接口,因此Pinter对象即可以直接赋给Output变量,也可直接赋给Product变量。仿佛Printer类既是Output类的子类,也是Product类的子类,这就是Java提供的模拟多继承。
Printer实现了Output接口,即可获取Output接口中定义的print()方法和test()两个默认方法,因此Printer实例可以直接调用这两个默认方法。
接口不能显示继承任何类,但所有接口类型的引用变量都可以直接赋给Object类型的引用变量。
java接口继承接口有意义吗?比如 interface People{ void id(); } interface User extends People{ void id(); void name(); } 继承不是就是为了代码的重构重用性吗?这样继承后,子接口还是要...
这个问题很模糊,有待进一步讨论!!!
这个问题很模糊,有待进一步讨论!!!
Java接口 开发工具与关键技术:My Eclipse 10、Java 作者:郑凯丰 撰写时间: 2019年5月2日 修饰符 :public 、abstract [修饰符] interface 接口名称 extends 父接口,父接口1,… { 静态常量定义; 抽象方法定义;...
Java接口

开发工具与关键技术:My Eclipse 10、Java

作者:郑凯丰

修饰符 :public 、abstract
[修饰符] interface 接口名称 extends 父接口,父接口1,…
{
静态常量定义;
抽象方法定义;
}
接口特性:
1.接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
2.接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
3.接口中的方法都是公有的。
4.编译时自动为接口里定义的方法添加public abstract修饰符
5.Java接口里的成员变量只能是public static final共同修饰的,并且必须赋初值,可以不写public static final,编译的时候会自动添加
代码:
1.写好的两个抽象方法;
public static int INT_A=10;
public final static int INT_B=11; //接口中 只能有抽象方法 public abstract void print(); public void test();
}
2.然后再另外一边用impplements来实现上面那个接口
public class InterFaceOneImpl implements InterFaceOne{
//接口的实现类 接口的名称+Impl
@Override
public void print() {
System.out.println(“别看我只是一只羊”);
}
@Override public void test() {	System.out.println("羊儿的聪明难以想象");	}
}
接口继承
接口继承的方式和类与类之间的继承很相似,接口继承的关键字extends
但接口允许多继承。
代码:
接口一:
public interface InterFaceOne {
public static int INT_A=10;
public final static int INT_B=11; //接口中 只能有抽象方法 public abstract void print(); public void test();
}
接口二:
public interface Face2 {
public abstract void sum();
public void ont();
}
继承多个接口:
public interface Three extends InterFaceOne,Face2
{
}
classB extends classAjava接口可以多继承。