抽象类和接口的异同

自己总结的抽象类和接口的异同点。

相同点:

1.都是抽象概念的产物;

2.都需要被继承或实现才能发挥他们的功能;

3. 抽象类和接口都不能被实例化,不能调用new关键字创建实例。

不同点:

1. 抽象类必须要用abstract修饰,定义接口要用interface关键字;

2. 抽象类可以包含抽象方法,也可以包含普通方法;

3. 抽象类里可以定义非静态变量,静态变量,接口里所有定义的变量都默认是public static final修饰;

4. 抽象方法必须显示地定义成 public abstract, 接口中的方法默认就是public abstract,也可显示定义;

5. 抽象类可以包含Field,方法(普通方法和抽象方法)、构造器、初始化块、内部类、枚举类6种成分。接口里可以有Field,方法,内部类,枚举。

6. 抽象类只能单继承,接口支持多继承。

7. 抽象类可以有构造函数,用来被子类调用,不能用来创建实例。接口是没有构造函数的。

注意:

  1)abstract和final不能同时修饰方法;

  2)abstract和static不能同时修饰方法;

  3)abstract和private不能同时修饰方法

 抽象类Code:

public abstract class Example_abs {
    private int a;
    public static String bString;
    public abstract void fn();
    public void fn2(){}
    {
        
    }
    static{
        
    }
    public Example_abs() {

    }
    public class aaa{
        
    }
    public static class bbb{
        
    }
    public static interface ccc{
        
    }
    public enum EE{
        ONE,TWO;
    }
}

 接口Code:

public interface Example_inf {
    int aa=100;
    public static final int bb=7;
    void f();
    public abstract void f2();
    public class aaa{
        
    }
    public static class bbb{
        
    }
    public static interface ccc{
        
    }
    public enum EE{
        ONE,TWO;
    }
}

 

posted @ 2016-02-29 15:56  wxlovewx  阅读(824)  评论(0编辑  收藏  举报