一、抽象类:含有抽象方法的类叫做抽象类(抽象类中不一定只含有抽象方法,可以有普通方法和成员变量),抽象类必须在类前用abstract关键字修饰。因为抽象类中的方法没有具体实现,所以抽象类不能创建对象。
抽象方法:只有声明没有具体实现。如:
由以上的定义可以看出来抽象类就是用来被继承的,对一个父类,如果它的某个方法在父类中的实现没有任何实际意义,必须根据不同的子类来决定不同的实现,那么就可将这个类定义为abstract 将方法定义为abstract方法。
1、抽象类和普通类的区别:(1)抽象方法的修饰必须为public 或protected。 (2)抽象类不能创建对象。(3)一个类继承了抽象类,则子类必须实现父类的抽象方法,如果没有实现抽象方法则子类也必须定义为抽象类。
二、接口
接口泛指供别人调用的方法或者函数,是对行为(方法的)抽象。 接口中可以含有变量和方法,(注:接口中的变量会被隐式转为public static final,方法会被隐式转换为public abstarct 方法,即:接口中的方法都是抽象方法)所以有人说接口是比抽象类更加抽象的“类”。
三、接口和抽象类的区别
(1)类可以实现多个接口。只能继承一个类(单继承、多实现)(2)抽象类可以提供成员方法实现的细节,接口中只能存在public abstract 方法(3)抽象中的成员变量可以是各种类型,接口中只可以是 public static final 类型(4)接口中不可以含有静态代码块以及静态方法,而 抽象类中可以含有静态方法和静态代码块(4)抽象类之间支持多继承。
注:抽象类是一种模板式设计,接口是一种行为规范。