Day15
/**
-
抽象类: 我们之前的 猫Cat 狗Dog 动物Animal 案例 ,Cat 类 Dog 类 创建实例 都可以有具体的对象与之对应
-
但是 Animal类的 实例 却没有具体的对象与之对应, 也就是说 Animal 作为父类 , 创建的对象 没什么意义。而且
-
当 子类 重写了 父类的方法时 ,父类的这个方法 也没什么意义了, 所以 java 提供了 专门用来 做继承 设计父类的
-
一个概念 抽象类
-
没有使用抽象类作为父类时的一些缺陷 :
-
父类是具体的类 : 父类自身创建的实例 没有具体对象 与之对应 意义不大
-
父类的某些方法 被子类重写,父类中的这些方法 也没有什么意义
-
父类无法限制子类 子类可以随意设计
-
为什么需要抽象类? 如何定义抽象类?
是一种模版模式。抽象类为所有子类提供了一个通用模版,子类可以在这个模版基础上进行扩展。
通过抽象类,可以避免子类设计的随意性。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用。抽象类 是用来 专门做父类 被继承使用的
抽象类的定义语法:
修饰符 abstract class 类名 {}
抽象类的内部语法:
1. 普通类中有的元素 抽象类也可以有 比如 成员变量 构造方法 普通方法
2.抽象类中 可以定义抽象方法 使用 abstract 关键字 抽象方法没有方法体 ,抽象类中定义的
抽象方法 只是 描述 有这个功能,但是 抽象类不提供具体的实现,具体实现由子类提供。
修饰符 abstract 返回值类型 方法名(方法参数); 注意:没有方法体3.抽象类不能创建自身的实例 4.抽象类有构造方法 但是不能创建自身实力 构造方法的意义 是 创建子类实例的时候 初始化父类的数据 给子类实例使用 5.含有抽象方法的类 只能定义成抽象类 也就说 一个类 如果有抽象方法 那这个类一定是抽象类, 但是 一个 抽象类 不一定有抽象方法6. 抽象类对子类的限制 如果 一个子类 没有实现抽象父类的所有的抽象方法 那么这个子类也要被定义成抽象类换句话说: 一个子类 继承了抽象类 要么 要实现这个抽象类中的所有抽象方法 ,要么 这个子类也要被定义成抽象类
总结:
抽象类的成员变量 跟 具体类没啥区别 一样使用
抽象类的成员方法:
可以是具体方法: 子类可以直接调用 提高代码的复用性
可以是抽象方法: 强制子类去实现
关于 abstract 关键字 修饰类 抽象类 需要被继承修饰方法 抽象方法 必须被实现final 和 abstract 互斥private 和 abstract 互斥static 和 abstract 互斥
- */