一、static final常量:
- 必须声明同时初始化
- 由类名.点访问,不能改变
- 建议:常量名所有字母都大写,多个档次用_隔离
- 特点:编译器在编译时会将常量直接替换为具体的数,效率高
- 使用:数据永远不变,并且经常使用
public class StaticFinalDemo {
public static void main(String[] args) {
System.out.println(Aoo.PI); //常常通过类名点来访问
//Aoo.PI = 3.1415926; //编译错误,常量不能被改变
//1)加载Boo.class到方法区中
//2)静态变量num一并存储到方法区中
//3)到方法区中获取num的值并输出
System.out.println(Boo.num);
//编译器在编译时会将常量直接替换为具体的值,效率高
//相当于System.out.println(5);
System.out.println(Boo.COUNT);
}
}
class Boo{
public static int num = 5; //静态变量
public static final int COUNT = 5; //常量
}
class Aoo{
public static final double PI = 3.14159;
//public static final int NUM; //编译错误,常量必须声明同时初始化
}
二、抽象方法:
- 由abstract修饰
- 只有方法定义,没有具体的实现(连{ }都没有)
三、抽象类:
- 由abstract修饰
- 暴汗抽象方法的必须是抽象类
- 抽象类不能实例化(new 对象)
- 抽象类是需要被继承的,子类
- 重写戳右抽象方法--------------变不完整为完整
- 也声明为抽象类-----------------一般不怎么用‘
抽象类的意义:
- 封装共有的属性和行为-------代码复用
- 为所有子类提供统一的类型----------向上造型
- 可以包含抽象方法,为所有子类提供统一的入口(能点出来)
子类的行为不同,当入口是一致的,同时相当于定义了一个标准(强制重写)
补充:
1.设计规则:
将其共有的属性和行为,抽到父类中--------抽共性
若对象行为都一样,设计为普通
方法
若对象行为不一样,设计为抽象方法
2.抽象方法/抽象类的疑问:
抽象方法存在的意义是什么?
保证当发生向上造型时,通过父类的引用点出来那个方法。
既然意义只在于能点出来,那为啥不设计普通方法?
若设计为普通方法,则子类可以重写也可以不重写,而设计为抽象方法,可以强制子类必须重写
----------------做了个标准,强制必须重写