抽象类(abstruct class)
抽象类:是抽象方法和非抽象方法的集合
抽象方法:只有方法声明,没有方法的实现,以 ; 结束
public abstract class test{
public abstract int test1(); //抽象方法
public int test2(); //也是抽象方法
public void test3(){ //抽象类里可以有非抽象方法
System.out.println("123");
}
}
抽象方法格式:abstract void xxx()
- 含抽象方法的类必须被声明为抽象类。
- 抽象类不能被实例化。
- 抽象类是用来被继承的。
- 抽象类的子类必须重写父类的抽象方法,并提供方法体。
- 不能用abstract修饰私有方法,构造方法,静态方法
下列情况类必须被定义为抽象类:
- 当一个类的一个或多个方法是抽象方法时
- 当类是一个抽象类的子类,且没有实现父类的抽象方法,只是实现了部分。
- 当一个类实现一个接口,并且不能实现接口的全部抽象方法时。
- abstract不能和final,static,private同时使用。
接口
- 接口中只包含常量和抽象方法,而没有变量和方法的实现。
- 接口对类来说是一套规范,一套行为准则。
- 接口不是类,所以不能被实例化。
接口特点
- 有interface来定义
- 接口中所有的成员变量默认由public static final修饰(相当于全局常量)
- 接口中所有方法都默认由public static修饰的。接口没有构造方法
- 实现接口中的类必须提供接口中所有方法的具体实现内容
- 多个无关的类可以实现同一个接口
- 一个类可以实现多个无关的接口
- 与继承关系类似,接口与实现类之间存在多态性
- 接口也可以继承另一个接口,用extends关键字
接口与抽象类的区别
成员区别
抽象类——变量,常量;有构造方法;有抽象方法,也有非抽象方法
接口——常量;抽象方法
关系区别
类与类——继承,单继承
类与接口——实现,可以单实现,也可以多实现
接口与接口——继承,单继承,多继承
设计理念区别
抽象类——对类(事物)抽象,包括属性、行为
接口——对行为抽象,主要是行为