抽象类与接口

抽象类里面不一定有抽象方法,有抽象方法的类只能定义成抽象类,抽象类不可以被实例化,抽象类可以包含Filed、方法(普通方法或抽象方法)、构造器、初始化模块、内部类、枚举类,接口是特殊的抽象类。


抽象方法定义:public abstract void test();


定义抽象类:

public abstract class Shape{


{

System.out.println("初始化...");

}


private String color;


public abstract double calPerimeter();


public abstract String getType();


public Shape(){}


}


由于不能实例化,所以只能作为父类被子类继承(extends)。


Shape s1=new Circle();

Shape s2=new Triangle();


可以看出多态的性质,同时也是设计模式中模板模式。


彻底的抽象类:接口!


定义接口时不再用class,而是用interface,并且接口可以继承接口,并且可以继承多个接口。


接口相当于一种公共规范(因此内部修饰符只能用public),不能包含构造器和初始化块,接口中的Field只能是常量,并且用public static final修饰(若不显示声明,默认系统自动加上),接口中的方法只能是抽象实例方法,接口中的内部类只能是内部接口和枚举类。


同样道理,接口也不可以实例化,通过子类实现(implements)。


可以这样理解:接口相当于“图形”这个概念,抽象类相当于“形状”等这个概念,实现类相当于“三角形”、“圆形”等这个概念。


你可能感兴趣的:(抽象类与接口)