1、final关键字ide
1.final类是不能被继承的,因此也就没有子类了。例子以下:会报错spa
2.final 方法 顺便复习下重载和重写blog
2.1 重载例子:继承
public class TestFinalClass {get
public static void main(String args[]){编译器
}it
public void add(int i){io
System.out.print("parents..add...");编译
}class
}
class TestChildrenClass extends TestFinalClass{
public void add(int i,int j){
System.out.print("children...add");
System.out.print("33333");
}
}
2.2 重写 override
public class TestFinalClass {
// private String name;
public static void main(String args[]){
new TestChildrenClass().add(0);
}
public void add(int i){
System.out.print("parents..add...");
}
}
class TestChildrenClass extends TestFinalClass{
public void add(int i){
System.out.print("children...add");
System.out.print("33333");
}
}
2.3 若是父类不想子类重写它的某个方法就能够用final来定义该方法,例子以下
public class TestFinalClass {
// private String name;
public static void main(String args[]){
new TestChildrenClass().add(0);
}
public final void add(int i){
System.out.print("parents..add...");
}
}
class TestChildrenClass extends TestFinalClass{
public void add(int i){//这样写会报错,没法重写
System.out.print("children...add");
System.out.print("33333");
}
}
除了上面这个用处,还有个用处就是高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提升执行效率。
3.final变量
public class TestFinalClass {
public final static String s = ".......final s";
public final int E =1; //final成员变量必须付初值
// private String name;
public static void main(String args[]){
}
public static void add(int i){
final String m; //final非成员变量能够不用初值
m = "...m"; // 给予初值
m = "..sdjf";//出错 不能再给予值
}
}
4.final参数
public class TestFinalClass {
public static void main(String args[]){
}
public static void add(final int i){
System.out.print(""+i); // 只能使用该参数
i = 0;//不能给予值
}
}
2、static 关键字
1.static方法
public class TestFinalClass {
public static void main(String args[]){
TestChildrenClass.add(0); //能够在类建立以前引用这个static方法
}
}
class TestChildrenClass {
public static void add(int i){//然而是不能经过类的实例来引用的
System.out.print("children...add");
}
}
2.static 成员变量
public class TestFinalClass {
public static void main(String args[]){
String name = TestChildrenClass.name;//静态成员
}
}
class TestChildrenClass {
public static String name = "user";//不能经过类的实例来引用的,当用private修饰时就不能够用了
}
3.当static与final一块儿使用来修饰成员变量和成员方法,可简单理解为“全局常量”! 3.1 对于变量,表示一旦给值就不可修改,而且经过类名能够访问。 3.2 对于方法,表示不可覆盖,而且能够经过类名直接访问。