这讲我们来重点熟悉接口的使用,包括接口的声明,继承,属性的定义以及类的实现等。
原问地址: http://www.java2000.net/p11584
先看相关的代码
lession8/Lession8.java
lession8/InterfaceSamePackage.java
lession8/InterfaceSamePackageAbstract.java
lession8/otherpackage/InterfaceOtherPackagePublic.java
lession8/otherpackage/InterfaceOtherPackageDefault.java
lession8/InterfaceSamePackageExtends.java
测试,请注意每次测试后恢复现场。‘
1 尝试把接口的方法改成 protected 看看编译错误
2 尝试继承别的package的默认接口,看看编译错误
3 去掉 main方法里的那个注释,看看编译错误
4 尝试在接口里声明一个对象属性,不初始化,看看编译错误
提示:
1 接口的方法都是public的,不能使用protected 修饰符
2 接口的属性都是 public static final 的,不允许修改
3 接口的对象属性必须初始化
差不多了,我能想到的关于接口的东西就这么多了,如果我以后发现了什么漏掉的,我会编辑这个帖子,并在回复里写上更新。
原问地址: http://www.java2000.net/p11584
先看相关的代码
lession8/Lession8.java
- package lession8;
- import lession8.otherpackage.InterfaceOtherPackagePublic;
- /**
- * 老紫竹JAVA基础培训(8),认识接口。<br>
- *
- *
- * @author 老紫竹 JAVA世纪网(java2000.net)
- *
- */
- public class Lession8 {
- public static void main(String[] args) {
- // 可以直接使用接口的属性
- System.out.println(Test1.Number1);
- // final类型是不能修改的
- // Test1.Number2 ++;
- }
- }
- /**
- * 实现本package的接口
- *
- * @author 老紫竹 JAVA世纪网(java2000.net)
- *
- */
- class Test1 implements InterfaceSamePackage {
- // 接口的方法必须是public的
- // 虽然那面没写,但也是,这是规定
- // 实现的方法也必须是public的
- // 不写或者protected或者private都是错误的
- @Override
- public void testA() {
- }
- @Override
- public void testB() {
- }
- }
- /**
- * 实现其它package的接口。<br>
- * 对接口里面的方法实现同样必须是public的。
- *
- * @author 老紫竹 JAVA世纪网(java2000.net)
- *
- */
- class Test2 implements InterfaceOtherPackagePublic {
- }
- class Test3 implements InterfaceSamePackageAbstract {
- @Override
- public void testA() {
- }
- }
- /**
- * 类可以实现多个接口.<br>
- * 即使那些接口之间已经存在继承关系也没问题。
- *
- * @author 老紫竹 JAVA世纪网(java2000.net)
- *
- */
- class Test4 implements InterfaceOtherPackagePublic,
- InterfaceSamePackageAbstract, InterfaceSamePackageExtends {
- // 你要实现的方法是这些接口要求实现的总和
- // 也就是每个接口里的方法你都必须实现
- // #######################
- // #### 注意,############
- // #######################
- // InterfaceSamePackage 和 InterfaceSamePackageAbstract
- // 我们有2个接口定义了各自的方法,但名字和参数(类型和顺序)完全相同
- // 我们的实现只需要有一个就行了
- // 如果2个接口要实现的功能不一样,强烈建议不要用相同的名字和参数
- // 这属于设计问题,很严重的设计问题。
- @Override
- public void testA() {
- }
- @Override
- public void testB() {
- }
- }
- /**
- * 如果你这个类只能实现所有接口的部分功能,可以用abstract类。<br>
- *
- * @author 老紫竹 JAVA世纪网(java2000.net)
- *
- */
- abstract class Test5 implements InterfaceOtherPackagePublic,
- InterfaceSamePackageAbstract, InterfaceSamePackageExtends {
- @Override
- public void testB() {
- }
- }
- package lession8;
- /**
- * 接口例子A.
- *
- * @author 老紫竹 JAVA世纪网(java2000.net)
- *
- */
- 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 = "java2000.net";
- void testA();
- public void testB();
- }
lession8/InterfaceSamePackageAbstract.java
- package lession8;
- /**
- * 其它package的default类型的接口。
- *
- * @author 老紫竹 JAVA世纪网(java2000.net)
- *
- */
- abstract interface InterfaceSamePackageAbstract {
- public void testA();
- }
- package lession8.otherpackage;
- /**
- * 其它package的public类型的接口。
- *
- * @author 老紫竹 JAVA世纪网(java2000.net)
- *
- */
- public interface InterfaceOtherPackagePublic {
- }
- package lession8.otherpackage;
- /**
- * 其它package的默认类型的接口。
- *
- * @author 老紫竹 JAVA世纪网(java2000.net)
- *
- */
- interface InterfaceOtherPackageDefault {
- }
- package lession8;
- import lession8.otherpackage.InterfaceOtherPackagePublic;
- /**
- * 接口可以继承接口.<br>
- * 请注意是extends 接口,不是implements.<br>
- * 只有类(class)才能 implements 接口。<br>
- * 一个接口可以同时继承多个接口。
- *
- * @author 老紫竹 JAVA世纪网(java2000.net)
- *
- */
- public interface InterfaceSamePackageExtends extends
- InterfaceSamePackageAbstract, InterfaceSamePackage,
- InterfaceOtherPackagePublic {
- }
测试,请注意每次测试后恢复现场。‘
1 尝试把接口的方法改成 protected 看看编译错误
2 尝试继承别的package的默认接口,看看编译错误
3 去掉 main方法里的那个注释,看看编译错误
- Test1.Number2 ++;
提示:
1 接口的方法都是public的,不能使用protected 修饰符

2 接口的属性都是 public static final 的,不允许修改

3 接口的对象属性必须初始化

差不多了,我能想到的关于接口的东西就这么多了,如果我以后发现了什么漏掉的,我会编辑这个帖子,并在回复里写上更新。