final:最终的,不可改变的
-
修饰变量:变量不能被改变
-
修饰方法:方法不能被重写
-
修饰类:类不能被继承
2.static final常量:
-
声明的同时必须给值,声明的同时初始化
-
常常 通过类名.进行访问
-
常量不能被改变
-
建议:常量所有字母都大写,多个单词之间用-隔开
-
编译器在编译时会将常量直接替换为具体的值,效率高
-
使用时:程序运行过程中数据永远不变,并且经常使用
class Ioo{ public static int num=5;//静态变量 public static final int COUNT=5;//常态变量/常量 }
静态变量 先生成点class字节码文件
静态变量num存到方法区中
到方法区中访问静态变量中访问num的值
3.抽象方法:
-
由abstract修饰
-
只有方法的定义,没有具体的实现(连{}都没有)
4.抽象类:
-
由abstract修饰
-
包含抽象方法的类必须是抽象类
-
抽象类不能被实例化(必须new对象)
-
抽象类是需要被继承的
继承后的派生类通常会有两种方式去使用
-
重写所有的抽象方法----将不完整变完整
-
也将类声明成抽象类,但是一般不这样做,变成抽象类也不能更改,只能继承
补充:
1.设计规则:
-
将派生类所有共有的属性和行为,抽到超类中-----抽共性(写方法)
-
若派生类的行为代码都一样,设计为普通的方法
-
若派生类的行为代码都不一样,就需要设计为抽象的方法
2.抽象方法/抽象类的疑问:
-
抽象方法存在的意义是什么?
保证发生线上造型时,通过超类的引用能打点出来那个方法----保证能点出来
-
既然抽象的意义能保证点出来,那为什么不设计成为普通的方法呢
设计为普通的方法,意味着派生类可以重写也可以不重写,但设计为抽象方法,派生类则必须重写
3.画对象带书:先找到main ----非常重要
当创建对象时,就会分配到对象中的实例变量,对象的数据都在构造方法中,并且已经弄好值了