static final常量:应用率高
- 必须声明同时初始化
- 由类名打点来访问,不能被改变
- 建议:常量所有字母都大写,多个单词用_分隔
- 编译器在编译时会将常量直接替换为具体的数,效率高
- 何时用:数据永远不变,并且经常使用
抽象方法:
- 由abstract修饰
- 只有方法的定义,没有具体的实现(连{}都没有)
抽象类:
- 由abstract修饰
- 包含抽象方法的类必须是抽象类
- 抽象类不能被实例化(new对象)
- 抽象类是需要被继承的,派生类:
- 重写抽象方法---------------变不完整为完整
- 也声明为抽象类------------一般不这么用
- 抽象类的意义:
- 封装共有的属性和行为-------------------代码复用
- 为所有派生类提供统一的类型----------向上造型(代码复用)
- 可以包含抽象方法,为所有派生类提供统一的入口(向上造型后能点出来),同时可以达到强制必须重写的目的(相当于制定了一个标准)
设计规则:
- 将派生类所共有的属性和行为,抽到超类中-------------抽共性
- 若派生类的行为(实现代码)都一样,设计为普通方法
若派生类的行为(实现代码)都不一样,设计为抽象方法
抽象方法存在的意义是什么?
保证当发生向上造型时,通过超类的引用能点出来那个方法-------保证能点出方法来
既然抽象方法的意义是保证能点出来,那为什么不设计为普通方法呢?
设计为普通方法,意味着派生类可以重写也可以不重写,但设计为抽象方法,则可以强制派生类必须重写--------达到强制派生类重写,统一的目的