一、final关键字:
final关键字特点:
1、final修饰的类不能被继承
2、final修饰的方法不能被重写
3、如果final修饰的变量是基本数据类型,那么一旦被初始化后就不能更改;如果final修饰的是引用数据类型,那么一旦初始化后就不能指向其他对象。
4、final不能修饰构造方法(构造器不是通过继承得到的,所以没有必要)
使用final修饰的方法的原因:
1、方法锁定,不能被继承类重写或修改
2、高效(Java早期版本,会将final修饰的方法转为内嵌调用,但是如果方法过于庞大,优化的效果甚微;因此现在的Java版本已经不采用这种优化)
二、static关键字:
static使用场景:
1、修饰成员变量和成员方法:static修饰的成员变量、成员方法属于类,调用时可用:类名.变量名或类名.方法名
2、静态代码块:静态代码块在JVM加载类时,会执行一次(仅执行一次);而非静态代码块在每new一次,就会执行一次。静态代码块在非静态代码块之前执行(以此流程:静态-》非静态》构造方法)
3、静态内部类(static修饰类只能是内部类):静态内部类与非静态内部类区别:非静态内部类在编译后会隐含地会保存一个引用,指向创建它的外围类;而静态内部类没有。没有引用意味着它:不依赖外围类;不能调用外围类的非static的变量和方法。
4、静态导包(用来导入类中的静态资源)
三、this关键字&super关键字:
this指向当前类的对象,super指代父类。
this用法:
①使用this引用隐藏数据域
public class F{ private int i=1; private static double k=0; public void setI(int i){ this.i=i;//this引用隐藏数据域 } public static void setK(double k){ F.k=k; } }
②使用this调用同类的构造方法
public class Circle{ private double r; public Circle(Double r){ this.r=r;//使用this引用隐藏数据域 } public Circle(){ this(1,0);//调用同类中另一个构造方法(this()放在构造方法的第一行) }
③引用对象自身属性和方法
this.属性名/方法名()(通常this都是省略掉的。。。)
super关键字用法:
①调用父类的构造方法
public Circle(double radius,String color,boolean filled){ super(color,filled);//调用父类构造方法时,super()必须放在第一行 this.radius=radius; }
②调用父类的方法
super.父类方法名(参数)
自己总结,有错请指正!!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)