AbstractDemo.java
/** * 抽象类(与接口对比差异) * 一个类只能继承一个抽象类 * */ public abstract class AbstractDemo { // 可以不赋值变量且可以使用public意外的修饰符 public String tempBBBB; private String tempAAA="123455"; // 可以有静态代码块和方法 static { System.out.println("静态代码块..."); } public static void testFunc(){ System.out.println("静态方法..."); } // 可以实现方法 public void running(){ System.out.println("正在跑...."); } // 可以使用public意外的修饰符 private void runend(){ System.out.println("已经跑完..."); } }
InterfaceDemo.java
/** * 接口(与抽象类对比差异) * 多个接口可以被一个类实现 * */ public interface InterfaceDemo { // 变量必须赋值,且只能使用public修饰符(可省略) String tempAAA="123455"; /** * 注:虽然只写了"String tempAAA="123455";" * 但是完整的应该为:"public static final String tempAAA="123455";" * 所以外部不能修改,只能像静态成员变量一样引用,即:InterfaceDemo.tempAAA * */ /* 不能用静态代码块和方法 static { } static testFunc(); */ // 不管是默认方法还是抽象方法,只能使用public修饰符(可省略) // 可以默认实现方法(注:这是在Java8及之后的版本才能实现,并且必须有"default"否则报错) default void running(){ System.out.println("正在跑...."); } // 只能是抽象方法(可以移除修饰符"abstract")且不能具有实体(无{}的内容) abstract void runend(); }