static final常量:
- 必须声明同时初始化
class A{
public static final PI = 3.14;}
- 类名点来访问,不能被改变
double x = A.PI;
- 命名规则:常量名所有字母都大写,多个单词之间用_分隔
- 好处:编译器在编译时将常量直接替换为具体的值,效率高
- 使用场景:数据永远不变、并且经常使用时设置为常量,方便以后做改动。
抽象方法和抽象类:
抽象方法
- 由abstract修饰
- 只有方法的定义,没有具体的实现(连{}都没有)
- 抽象方法必须包含在抽象类中
public abstract void show();
抽象类:
- 由abstract修饰
- 包含抽象方法的类必须是抽象类
不包含抽象方法的类也可以声明为抽象类(没意义) - 抽象类不能被实例化
- 抽象类是需要被继承的,一般作为超类存在
抽象类的意义:
- 封装派生类所共有的属性和行为--------代码复用
- 为所有派生类提供统一的类型----------向上造型
- 可以包含抽象方法,为所有派生类提供统一的入口,
派生类的具体实现不同,但入口是一致的(方便使用超类来定义数组,可以点出相同名称的方法)