[JAVA · 0基礎]:11.終結者-final
阿新 • • 發佈:2017-07-30
equals font getname post pan 必須 ont ring 能夠
關於finalkeyword的總結,是非常easy學習和掌握的,大致分為用final修飾的符號常量、類、方法、屬性四部分。而這四部分的內容也是我們必須掌握的,非常有用。在項目中常常來利用finalkeyword來幫忙以完畢我們特定的任務。以下就來看看終於的final:
符號常量
用 final 修飾的變量就稱之為終於變量。也稱之為符號常量。
比如:
double PI = 3.14;
===>>> final double PI = 3.14; //符號常量
Demo
<span style="font-size:18px;"><span style="font-size:18px;">package com.hqg.oop.d37.a3; public class finalTest { public static void main(String[] args) { final double PI = 3.14; //PI = 3.1415926; //符號常量不可中途改變其值。 SonDemo1 sd = new SonDemo1(); int re = sd.add(10, 20); System.out.println( re ); } } class Person{ private String name; private final boolean sex ; //終於屬性(僅僅讀屬性) public Person( String name, boolean sex ) { this.name = name; this.sex = sex; } } class DemoA { public final int add( int x, int y ){ return x + y; } } class SonDemo1 extends DemoA { } //class Son extends String { // //} final class Father { } //class Son extends Father { // //}</span></span>
類
用 final 修飾的類,即為終於類。
特性:
它不可有子類。即: 防繼承的。
比如: 專家提供的 String 類就量個終於類。
方法
用 final 修飾的方法。即為終於方法。
特性:
它不可被重寫。即: 防重寫。
屬性
用final修飾的實例變量就是終於屬性,也成為僅僅讀屬性。
特性:
1) 它必須由final修飾。
2) 它一旦賦值。則終身不變。(中途不變)
3) 當聲明終於的實例變量時。若沒有賦值,則在每個構造器中必須對它賦值。
4) 終於的實例變量沒有設定器。
5) 終於的實例變量名稱大寫。
Demo
<span style="font-size:18px;"><span style="font-size:18px;">package com.hqg.oop.d38.a1; public class FinalObjectVarTest { public static void main(String[] args) { Person p1 = new Person("張靈",false, 18); Person p2 = new Person("張靈",false, 18); System.out.println( p1 ); System.out.println( p2 ); System.out.println( p1.equals(p2) ); //p1.SEX = true; } } class Person { //實例變量 private String name; public final boolean SEX; //約定: true為男, false為女 private int age; public Person() { int n = (int)(2 * Math.random()); this.SEX = n == 1 ; } public Person(String name,int age) { this(); this.name = name; this.age = age; } public Person(String name, boolean sex, int age) { this.name = name; SEX = sex; this.age = age; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } //訪問器 public String getName() { return name; } public boolean isSEX() { return SEX; } public int getAge() { return age; } // @Override public String toString() { return "姓名: " + name + " 性別: " + (SEX ? "男":"女") + " 年齡: " + age; } @Override public boolean equals(Object obj) { Person pp = (Person)obj; if( this.name.equals( pp.name ) && this.SEX == pp.SEX && this.age == pp.age ){ return true; }else{ return false; } } } </span></span>
業務思想
就像英語中的一句諺語:”Each coin has two sides”(每一個硬幣都有兩面),keywordfinal正如那僅僅硬幣。用final來定義符號常量、類、方法、屬性能夠降低我們非常多工作,容錯率也提高了非常多。
[JAVA · 0基礎]:11.終結者-final