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 對於方法,表示不可覆蓋,而且能夠經過類名直接訪問。