final关键字:
1.final:最终的
2.用来修饰:类、方法、变量
3.用来修饰类:表明此类不能声明子类。
比如:String、StringBuffer、StringBuilder
4.用来修饰方法:表明此方法不能被重写。
比如:Object类中getClass():获取创建当前对象所属的类
5.用来修饰变量:表明此"变量"是一个常量。即:一旦赋值,就不可更改
-
5.1 final修饰的属性
在哪些位置可以赋值:显式赋值;代码块中赋值;构造器中赋值
特别的:static final共同修饰一个属性:全局常量。比如:Math的PI
-
5.2 final修饰局部变量
例题:
//用final修饰形参
public class Something {
public static void main(String[] args) {
Other o = new Other();
new Something().addOne(o);
}
public void addOne(final Other o) {//指的是o指向的地址不能在改变,o = null 也是错的
// o = new Other();
o.i++;
}
}
class Other {
public int i;
}
abstract关键字:
1.不能用来修饰属性、构造器、代码块。
2.abstract不能与private修饰的方法、final修饰的类或方法、static修饰的方法共用
3.abstract:抽象的
4.可以用来修饰:类、方法。
5.abstract修饰类:抽象类
- 抽象类不可以实例化
- 抽象类中一定有构造器,目的:为了子类对象实例化时要调用
- 子类继承抽象类以后,如果重写了所有的抽象方法,则此子类就可以实例化。
- 子类继承抽象类以后,如果没有重写所有的抽象方法,则此子类仍然是抽象类。
4.abstract修饰方法:抽象方法
- 特点:没有方法体。此方法不能被任何结构调用
- 一方面,抽象方法所在的类一定是抽象类。另一方面,抽象类中不一定有抽象方法。