抽象类
抽象类:用abstract关键字修饰的类
特点:抽象类必须被继承。
抽象类不能被直接实例化。
语法:abstract class 类名
{
类体;
}
抽象方法:用abstract修饰的方法,只有方法头,没有方法的具体实现(没有方法体)
特点:抽象方法必须被重写
抽象方法只有声明,不能有实现
定义了抽象方法的类必须是抽象类
语法:abstract 返回类型 方法名([参数列表]);
例如:
运行结果为:
接口
定义:接口是若干方法定义(方法未实现)和常数变量的集合
特点:变量是常量
方法是抽象(只有方法声明,没有实现)
语法:public interface 接口名
{
常量定义 [public static final] 数据类型 成员变量名=常量值;
方法声明 [public abstract] 返回值类型 方法名(形参列表);
}
一个接口可以通过extends方法继承另一个或多个接口
语法:public interface 接口A extends 接口B,接口C
{
常量定义
方法声明
}
接口的实现
与抽象类一样,一个接口本身不能被实例化,只能用来派生子类。一个类可以同时实现多个接口,从而实现多继承。
语法:public class 类 implements 接口A, 接口B,接口C
{
实现整个接口链中的所有抽象方法;
}
使用要点
一个类可以实现多个接口
一个类如实现接口必须写出所实现的接口中定义的所有方法,且方法头必须和接口中定义的完全一致(方法名、返回值、形参列表)
类中实现的接口方法必须写出public修饰符
类与类之间存在着继承关系,类与接口中间存在的是实现关系 继承用extends 实现用implements
总结
抽象类:关键字abstract
1.抽象类不能实例化(也就是不能创建对象)
2.抽象类只能通过子类继承去实例化子类
3.抽象类中的抽象方法在子类中必须全部实现
4.对于一个抽象类,并不要求其中的方法都是抽象的,但是一
但在类中有一个方法是抽象的,那么此类必须要定义成抽象类。
5.抽象方法不能有方法体,必须在子类中进行覆写实现
6.抽象类中可以定义普通的成员变量,也可以定义普通的方法成员
7.如果子类没有把所有抽象方法实现,那么子类也变成抽象的了
8.多态的情况用的较多
接口:关键字interface
1.接口可以多重实现;
2.接口中声明的属性默认为 public static final 的;也只能是 public static final 的;
3.接口中只能定义抽象方法,而且这些方法默认为public的、也只能是public的;
4.接口可以继承其它的接口,并添加新的属性和抽象方法。
5.多个无关的类可以实现同一个接口。
6.一个类可以实现多个无关的接口。
7.与继承关系类似,接口与实现类之间存在多态性。