關鍵字final和static用法
阿新 • • 發佈:2021-02-12
技術標籤:java
1.final
主要用法有以下四種:
-
用來修飾資料:變數只能被賦值一次且它的值無法被改變。對於成員變數來講,我們必須在宣告時或者構造方法中對它賦值;
-
用來修飾方法引數:在變數的生存期中它的值不能被改變;
-
修飾方法:該方法無法被重寫;(不常用)
-
修飾類:該類無法被繼承extends。(不常用)
1.1修飾類
以下程式碼編譯器直接報錯
package finalstudy; /** * @author yuguang * @date 2021/2/3 10:24 * @description * todo final修飾類無法被繼承 */ public class TestFinal01 { public static void main(String[] args) { ManPeople man = new ManPeople(); System.out.println(man.getAge()); } } class ManPeople extends People { } final class People{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
1.2修飾方法
編譯器報錯
package finalstudy; /** * @author yuguang * @date 2021/2/3 10:24 * @description todo final修飾方法無法被重寫override */ public class TestFinal02 { public static void main(String[] args) { People man1 = new ManPeople(); System.out.println(man1.getNameAndAge()); ManPeople man = new ManPeople(); man.setAge(18); man.setName("xixi"); System.out.println(man.getNameAndAge()); } } class ManPeople extends People { @Override public String getNameAndAge() { return "不想告訴你"; } } class People { private String name; private int age; public final String getNameAndAge() { return name + " : " + age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
1.3修飾方法
編譯器報錯程式碼
package finalstudy; /** * @author yuguang * @date 2021/2/3 10:24 * @description todo final修飾方法無法被重寫,編譯器直接報錯 */ public class TestFinal03 { public static void main(String[] args) { int age = 1; System.out.println(age++); System.out.println(++age); People man1 = new ManPeople(); System.out.println(man1.getNameAndAge()); ManPeople man = new ManPeople(); man.setAge(18); man.setName("xixi"); System.out.println(man.getNameAndAge()); System.out.println(man.testFinal(18, "xixi")); } } class ManPeople extends People { @Override public String getNameAndAge() { return "不想告訴你"; } } class People { private String name; private int age; public String testFinal(final int age, final String name) { name = "不告訴你"; age = 18; return name + " : " + age; } //過載 public String testFinal(final String name, final int age) { return name + " : " + age; } public String getNameAndAge() { return name + " : " + age; } //過載 public final String getNameAndAge(String name) { return name + " : " + age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
1.4修飾變數
package finalstudy;
/**
* @author yuguang
* @date 2021/2/3 10:24
* @description
* 包括成員變數和區域性變數,該變數只能被賦值一次且它的值無法被改變。
* 對於成員變數來講,我們必須在宣告時或者構造方法中對它賦值;
*/
public class TestFinal04 {
private final String name = null;
private final int age;
public TestFinal04() {
age = 0;
}
public static void main(String[] args) {
//變數只能被賦值一次且它的值無法被改變
final int age;
age = 18;
System.out.println(age);
// age = 19; //報錯
}
}