抽象类:用 abstract 声明的类
1、抽象类不能生成对象,其子类可以生成对象,但必须重写抽象父类的抽象方法
2、如果一个类中含有抽象方法,那么该类必须声明为抽象类
3、如果一个类中没有抽象方法,该类也可以声明为抽象类
4、抽象类的构造方法可以在子类中被调用
public abstract class AbstractClass
{
private int num1; //普通变量
private final int num2; //常量
public AbstractClass()
{
//构造函数
}
public void method1()
{
//普通方法1
}
public void method2()
{
//普通方法2
}
..............
public abstract void abstractMethod1(); //抽象方法1
public abstract void abstractMethod2(); //抽象方法2
..............
}
接口:使用 interface 定义
1、接口中的方法都是抽象的,其实现类必须要重写所有的方法
2、接口中所有的方法都是 public 权限的
3、接口中的变量默认都是 final 型,并且是静态的
4、实现接口用 implement
5、接口没有构造方法
public interface class InterfaceClass
{
public static final int num1 = 123;
public void method1();//抽象方法1
public abstract void abstractMethod2(); //抽象方法2
..............
}
抽象类和接口的区别:
1、成员区别
抽象类:
成员变量:可以为变量,也可以为常量
构造方法:有,但不可以实例化
成员方法:既可以为抽象,也可以为非抽象
接口:
成员变量:静态常量
构造方法:无
成员方法:只能是抽象
2、关系区别
类与类:单继承,即一个类只能继承一个类
类与接口:多实现,即一个类可以实现多个接口
接口与接口:多继承,即一个接口可以继承多个接口
3、设计理念
抽象类被继承体现的是“is a”关系,抽象类中定义的是该继承体系的共性功能
接口被实现体现的是“like a”关系,接口定义的是该继承体系的扩展功能