final的意思是最终,修饰类的时候不能被继承,类的成员不能被修改
final修饰类不可以被继承,但是可以继承其他类。
错误示范:
public class Yy {} public final class Fu extends Yy{} //可以继承Yy类 public class Zi extends Fu{} //不能继承Fu类
final修饰的方法不可以被子类重写,但父类中没有被final修饰方法,子类重写后可以加final。
public class Fu { // final修饰的方法,不可以被覆盖,但可以继承使用 public final void method1(){} public void method2(){} } class Zi extends Fu { //重写method2方法 public final void method2(){} }
final修饰的变量称为常量,这些变量只能赋值一次。而且终身不变(包括成员变量和局部变量)。
final修饰的方法不可以被子类重写,但父类中没有被final修饰方法,子类重写后可以加final,子类重写玩加上final孙子类就不能修改子类加上final的了
static关键字
静态不能访问非静态,但是非静态可以访问静态。因为静态是先创造的
被Static修饰过的都属于本类
Static是静态常量,不进站和堆,是在方法和数据共享区内扫描并保存,
静态优先于对象存在。
Static里面不能用this和super关键字,一个是代表本类对象一个代表父类对象,因为是对象,所以他俩还没有创建出来Static就提前创建出来了,所以访问不到。
被Static修饰的就属于类了,调用的时候建议用类名调用:
定义静态常量
public static final 数据类型 变量名 = 值;
具有static和final的共同特点:
创建必须赋值
进入方法和数据共享区,贯穿全局并且直接用类名调用
接口中的每个成员变量都默认使用public static final修饰。
所有接口中的成员变量已是静态常量,由于接口没有构造方法,所以必须显示赋值。可以直接用接口名访问。(简单说:就是创建是必须赋值)
原文:https://www.cnblogs.com/awdsjk/p/10914136.html