一、接口与抽象类比较
二、例子
package com.wbf.interfaceAndabstract; //抽象类A1, A2, A3 //至少包含一个抽象方法 //构造方法,抽象方法,普通方法,常量,变量 //抽象方法的修饰符只可以是public和protected, private是非法的 abstract class A1 { abstract void hello1_1(); //private abstract void hello1_2(); public abstract void hello1(); public void print1() { System.out.println("A1-->print1()"); } } abstract class A2 { public abstract void hello2(); public void print2() { System.out.println("A2-->print2()"); } } abstract class A3 { public abstract void hello3(); public void print3() { System.out.println("A3-->print3()"); } } //======================================================================================================================= //接口B1, B2, B3 //只有公共静态常量和公共抽象方法 //静态常量可以不写修饰符public static, 默认就是public static //抽象方法可以不写修饰符public, 默认就是public interface B1 { public static String str1 = "b1b1b1"; public abstract void say1(); } interface B2 { public static String str2 = "b2b2b2"; public abstract void say2(); } interface B3 { public static String str3 = "b3b3b3"; public abstract void say3(); } //======================================================================================================================= //抽象类只可以继承一个抽象类 abstract class X1 extends A1 { } //抽象类可以实现多个接口 abstract class X2 implements B1, B2, B3 { } //抽象类只可以继承一个抽象类,但可以实现多个接口 abstract class X3 extends A1 implements B1, B2, B3 { } //======================================================================================================================= //接口不可以继承抽象类(因为抽象类可能有非抽象方法) /* interface Y1 extends A1 { } */ //接口可以继承多个接口 interface Y2 extends B1, B2, B3 { } //接口只可以继承接口,不可以实现其他接口 /* interface Y3 implement B1, B2, B3 { } */ //======================================================================================================================= public class Test { public static void main(String args[]) { } }
原文地址:http://blog.csdn.net/javawangbaofeng/article/details/42679171