一、抽象类
1、面向对象的核心–面向抽象编程;
抽象类:包含了抽象方法的 类 就是抽象类;
抽象方法:方法中不包含函数体的方法,称为抽象方法;抽象方法必须在子类中给出具体实现,但抽象类本身不能创建对象。
例:public abstract class ChouXiang{ //抽象类 类中间接或者直接 包含抽象方法 就是抽象类
public abstract void DuiXiang() //抽象方法 抽象类 不含有方法体 例如 public abstract void DuiXiang() { } 这个不是抽象方法,,只是 函数体为空的普通方法。
}
2、抽象类的特点:
方法只是声明,但是并没有实现时候,这个方法就是抽象方法 ,,需要被abstract修饰 否则会语法报错。抽象方法也必须定义在抽象类中,抽象类一样需要用abstract修饰。
(1) 定义抽象类 时候可以包含抽象方法,但是不能实例;也可以不包含抽象方法
(2)抽象方法 可以定义构造器,抽象类的构造器 和普通方法的构造器相同。
(3)抽象类中 可以定义成员 可以定义静态成员,但是静态方法 不可以是抽象。
(4)抽象类的子类 必须直接或者间接给父类(抽象类) 中所有的抽象方法提供实现,否则子类 必须 也 抽象。
3、构造器
1.抽象类中可以定义构造器,也可以不定义构造器,使用系统默认提供的无参构造器,但是自定义构造器不能private
2.抽象类不能是fnal class,fnal类不能被继承,从语法的角度上说不允许继承,不是构造器的原因。
4、抽象类不可以被实例化
抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化,否则这个子类还是抽象类强调:注意抽象类中可以包含构造器、析构器、抽象方法和方法以及静态方法等,也可以没有抽象方法。
5、什么时候使用抽象类?
(1)、当一个类的一个或多个方法为抽象方法时
(2)、当该类为一个抽象类的子类,并且没有为所有抽象方法提供实现细节或方法主体时
(3)、当一个类实现一个接口,并且没有为所有抽象方法提供实现细节或方法主体时
6、抽象类和普通类的区别:
抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误