分享知识 传递快乐
final
- final可以修饰:属性,方法,类,局部变量(方法中的变量)
- final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。
- final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值。
- final修饰的属性表明是一个常量,创建后不能被修改。
- final修饰的方法表示该方法在子类中不能被重写。
- final修饰的类表示该类不能被继承。
static
- static可以修饰:属性,方法,代码段,内部类(静态内部类或嵌套内部类)
- static修饰的属性的初始化在编译期(类加载的时候),初始化后能改变。
- static修饰的属性所有对象都只有一个值。
- static修饰的属性强调它们只有一个。
- static修饰的属性、方法、代码段跟该类的具体对象无关,不创建对象也能调用static修饰的属性、方法等
- static不能与this、super使用,static跟具体对象无关,而this、super正好跟具体对象有关。
- static不可以修饰局部变量。
- static可以被继承,但不能被重写。
附:
如果父类中有一个静态的方法,子类也有一个与其方法名,参数类型,参数个数都一样的方法,并且也有static关键字修饰,那么该子类的方法会把原来继承过来的父类的方法隐藏,而不是重写。通俗的讲就是父类的方法和子类的方法是两个没有关系的方法,具体调用哪一个方法是看是哪个对象的引用;这种父子类方法也不在存在多态的性质。
java不推荐用对象调用static方法,这会使人混淆。
static final和final static
static final和final static没什么区别,一般static写在前面。
- static修饰的属性强调它们只有一个,final修饰的属性表明是一个常量,创建后不能被修改。
- static final修饰的属性表示一旦给值,就不可修改,并且可以通过类名访问。
- static final也可以修饰方法,表示该方法不能重写,可以在不new对象的情况下调用。
———————————
相互学习,共同进步
如有不足请留言指正