final在Java中是一个保留的关键字,能够声明成员变量、方法、类以及本地变量。一旦你将引用声明做final,你将不能改变这个引用了,编译器会检查代码,若是你试图将变量再次初始化的话,编译器会报编译错误。html
修饰变量(例如Math类的PI=3.1415926就是变量不可修改)学习
用final关键字修饰的成员(实例)变量或局部变量统称为final变量。final变量常常和static关键字一块儿使用,做为常量。用final关键字修饰的变量,若是是基本数据类型的变量,则其数值一旦在初始化以后便不能更改(只读类型);若是是引用类型的变量,则在对其初始化以后便不能再让其指向另外一个对象。htm
修饰方法对象
final关键字能够修饰方法,表明这个方法不能够被子类的方法重写(覆盖)。若是你认为一个方法的功能已经足够完整了,继承它的类中不须要改变的话,你能够声明此方法为final。final方法比非final方法要快,由于在编译的时候已经静态绑定了,不须要在运行时再动态绑定。blog
关于private和final关键字还有一点联系,这就是类中全部的private方法都隐式地指定为是final的,因为没法在类外使用private方法,因此也就没法覆盖它。继承
修饰类接口
当用final修饰一个类时,代表这个类不能被继承。也就是说,若是一个类你永远不会让他被继承,就能够用final进行修饰。final类中的成员变量能够根据须要设为final,可是要注意final类中的全部成员方法都会被隐式地指定为final方法。Java中有许多类是final的,譬如String类、Math类、Integer以及其余包装类。编译器
修饰方法编译
abstract关键字修饰的方法称为抽象方法。抽象方法只有方法的声明,没有方法的实现,即方法名后面没有大括号{},抽象方法是供子类继承重写的,他的实现是经过子类继承方法所在的类,而后重写(覆盖)该方法并实现具体功能。抽象方法通常定义在抽象类和接口中。class
修饰类
abstract关键字修饰的类称为抽象类。抽象类不能被实例化,不能经过new关键字建立类的对象。若是子类(非抽象类)继承了抽象类,抽象类能够指向子类的引用。抽象类能够包含抽象方法和非抽象方法。
如abstract class A{}、class B extends A{},不能够建立A类的实例对象即不能够“A a=new A();”。但A类的引用变量能够指向B类对象,便可以“A a=new B();”。
转载请注明出处 http://www.cnblogs.com/Y-oung/p/9048287.html
工做、学习、交流或有任何疑问,请联系邮箱:yy1340128046@163.com