抽象类
更类似是抽象出类们的具体声明抽象类中抽象方法
特点
1 方法只有声明没有实现时 该方法就是抽象方法 需要被abstract修饰
抽象方法必须定义在抽象类中 类也必须被abstract修饰
2 抽象类不可以被实例化 方法只有声明没有方法体 调用无意义 拒绝实例化
3 抽象类必须由其子类覆盖了所有的抽象方法后 该子类才可以实例化
否则这个子类还是抽象类 换句话说 子类继承抽象类必须全部覆盖父类的抽象方法
细节
1 抽象类有构造函数么? 有 用于给子类对象进行初始化
2 抽象类可不可以没有抽象方法? 可以但是很少见 目的就是不让该类创建对象
比如AWT适配器对象 通常这个类中的方法有方法体 但是却没有内容
abstract class Demo{
void show1(){}
}
3 抽象关键字可不可以和那些关键字共存? abstract和private非法的修饰符组合 本来抽象要被覆盖 你私有了又不让覆盖
static 不行 final也不行
4 抽象类 与 一般类异同点
同:两个都是用来描述事物的 都在内部定了成员
异:一般类有足够的信息描述事物 抽象类描述事物的信息有可能不足
一般类中不可定义抽象方法只能定义非抽象方法
抽象类可以定义抽象方法,同时也可以定义非抽象方法
一般类可以被实例化 抽象类不可以被实例化
5 抽象类一定是父类
abstract class People{
private int num;
abstract void cry();
abstract void laugh();
}