自己总结的抽象类和接口的异同点。
相同点:
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; } }