这讲我们来重点熟悉接口的使用,包括接口的声明,继承,属性的定义以及类的实现 等。
最终的目录结构
先看相关的代码
lession8/Lession8.java
package lession8;import lession8.otherpackage.InterfaceOtherPackagePublic;/*** 老紫竹JAVA基础培训(8),认识接口。*** @**/public class Lession8 { public static void main(String[] args) { // 可以直接使用接口的属性 System.out.println(Test1.Number1); // final类型是不能修改的 // Test1.Number2 ++; }}/*** 实现本package的接口** @**/class Test1 implements InterfaceSamePackage { // 接口的方法必须是public的 // 虽然那面没写,但也是,这是规定 // 实现的方法也必须是public的 // 不写或者protected或者private都是错误的 @Override public void testA() { } @Override public void testB() { }}/*** 实现其它package的接口。* 对接口里面的方法实现同样必须是public的。** @**/class Test2 implements InterfaceOtherPackagePublic {}class Test3 implements InterfaceSamePackageAbstract { @Override public void testA() { }}/*** 类可以实现多个接口.* 即使那些接口之间已经存在继承关系也没问题。** @**/class Test4 implements InterfaceOtherPackagePublic, InterfaceSamePackageAbstract, InterfaceSamePackageExtends { // 你要实现的方法是这些接口要求实现的总和 // 也就是每个接口里的方法你都必须实现 // ####################### // #### 注意,############ // ####################### // InterfaceSamePackage 和 InterfaceSamePackageAbstract // 我们有2个接口定义了各自的方法,但名字和参数(类型和顺序)完全相同 // 我们的实现只需要有一个就行了 // 如果2个接口要实现的功能不一样,强烈建议不要用相同的名字和参数 // 这属于设计问题,很严重的设计问题。 @Override public void testA() { } @Override public void testB() { }}/*** 如果你这个类只能实现所有接口的部分功能,可以用abstract类。** @**/abstract class Test5 implements InterfaceOtherPackagePublic, InterfaceSamePackageAbstract, InterfaceSamePackageExtends { @Override public void testB() { }}
lession8/InterfaceSamePackage.java
package lession8;
/**
* 接口例子A.
*
* @
*
*/
public interface InterfaceSamePackage {
// 接口里面声明的属性
// 默认必须是 public static final 的
// 无论你怎么写,结果都一样
// 不能使用 protected 修饰
// 以下几种写法无任何区别,结果都是一样的。
public static final int Number = 0;
int Number1 = 1;
public int Number2 = 2;
public final int Number3 = 3;
final int Number4 = 4;
static int Number5 = 5;
// 对象类型必须初始化。
public static final String name = “xxxxxx”;
void testA();
public void testB();
}
lession8/InterfaceSamePackageAbstract.java
package lession8;/*** 其它package的default类型的接口。** @**/abstract interface InterfaceSamePackageAbstract { public void testA();}
lession8/otherpackage/InterfaceOtherPackagePublic.java
package lession8.otherpackage;/*** 其它package的public类型的接口。** @**/public interface InterfaceOtherPackagePublic {}
lession8/otherpackage/InterfaceOtherPackageDefault.java
package lession8.otherpackage;/*** 其它package的默认类型的接口。** @**/interface InterfaceOtherPackageDe 车到山前必有路,没路可以先开路,开路就得有乐观,