java接口和抽象类的简单理解

        接口:ide

       (1)接口内定义的变量都是public static final类型的,不管是否显示限定这些修饰符,且必需要被显式初始化,不然报错:函数

public interface Interface1 { /** * VARIABLE1显式添加public static final修饰符 * VARIABLE2隐式含有public static final修饰符 */
    public static final String VARIABLE1="AAA"; String VARIABLE2="BBB"; /** * VARIABLE3未显式初始化,代码变异报错: * The blank final field VARIABLE3 may not have been initialized */ String VARIABLE3; }

        (2)接口内定义的方法都是抽象方法,即不包含任何方法实现spa

            a.若是实现接口的类是普通类(非抽象类),则要实现该接口的全部方法,不然编译报错;code

            b.若是实现接口的类是抽象类,则能够只实现该接口的部分方法,不然抛出异常;blog

public interface Interface2 { /** * method1方法定义显式添加public abstract修饰符 * method2方法隐式含有public abstract修饰符,两个方法都是抽象方法 */
    public abstract String method1(); String method2(); }
/** * 普通类Class1实现Interface2接口,必须实现全部接口方法 * */
public class Class1 implements Interface2 { @Override public String method1() { // TODO Auto-generated method stub
        return null; } @Override public String method2() { // TODO Auto-generated method stub
        return null; } }
/** * 抽象类Class2实现Interface2接口,能够只实现方法method1 */
public abstract class Class2 implements Interface2 { @Override public String method1() { // TODO Auto-generated method stub
        return null; } }

    抽象类:继承

       (1)抽象类也是类,跟通常类同样能够有普通的变量、带实现的方法,能够有构造函数,但不能被实例化,只能用来继承接口

         普通方法必须带方法体,抽象方法不能带方法体;开发

public abstract class AbstractClass1 { String variable1;//普通变量
    public static final String VARIABLE2="AAA";//定义静态常量
    public void method1(){  }//普通方法,必须有方法体
    abstract void method2();//抽象方法,不能有方法体
 AbstractClass1(){//能够定义构造函数,但抽象类不能实例化,只能被继承
        System.out.println("此为构造函数"); } }

       接口和抽象类还有一个最大的不一样,一个类能够实现多个接口,但只能继承一个类it

       在实际应用中,接口是最为经常使用的,若是多个接口的实现有公共的部分,则能够考虑将这部份内容提取到抽象类中,而后继承该抽象类。也就是说,抽象类提供公共方法的实现,能够快速开发且统一管理,又容许你的类彻底实现本身的全部方法,不会出现紧耦合的问题。编译

相关文章
相关标签/搜索