final可以修饰成员变量、局部变量、方法、和类
1.final修饰成员变量时,必须在定义时初始化或者在构造方法中初始化
表示该成员变量无法在该类中被更改,但是可以被继承。如果子类不再定义相同名字的成员变量(不需要类型相同,名字相同就够了)。这时候子类中就继承了父类的final成员变量且子类无法去更改。如果子类重新定义了名字相同的成员变量,那么父类中的final成员变量就会相对于子类被隐藏。这时,想要访问父类的final变量,可以通过super或者父类的对象去访问。
2.final修饰方法时,该方法可以被继承,但是无法被重写。当子类定义了和父类方法签名相同的方法时,无论是否非final方法,编译器都会报错。因为final方法无法被重写。所以说,子类只能直接使用继承得来的final方法,而无法去重写他。
3.final定义类:该类无法被继承