程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java中一些症結字的應用技能總結

Java中一些症結字的應用技能總結

編輯:關於JAVA

Java中一些症結字的應用技能總結。本站提示廣大學習愛好者:(Java中一些症結字的應用技能總結)文章只能為提供參考,不一定能成為您想要的結果。以下是Java中一些症結字的應用技能總結正文


final——

final用於類表現該類不克不及派生子類。

final用於辦法表現該辦法不克不及被子類重寫。

final用於變量時表現常量,相似於C/C++的const症結字。

final用於成員變量表現該成員變量為常量,不克不及被修正,必需在變量界說時賦值。

final用於部分變量表現該部分變量為常量,不克不及被修正,可以在變量界說時賦值,也能夠先界說變量後賦值。

static——

static用於成員變量表現該變量只要一份,也就是說靜態成員變量屬於類而不屬於某個詳細的類實例對象,一切的類實例對象同享這個靜態成員變量,拜訪靜態成員變量時經由過程對應的類名完成。靜態成員變量在界說時可初始化賦值,也可不賦值,不賦值時會被主動初始化,切記部分變量弗成所以靜態的。

static用於辦法,使得不須要實例化類便可以經由過程類名來挪用靜態辦法,須要留意的是在靜態辦法內弗成以應用this症結字,弗成以挪用非靜態辦法,也弗成以援用非靜態成員變量。

static用於類,這裡指的是外部類,那末在其余處所便可以經由過程內部類名來援用這個靜態的外部類。

static還可以用於類的代碼塊,叫做靜態代碼塊,是在類中自力於類成員的static語句塊,可以有多個,地位可以隨意放,它不在任何的辦法體內,JVM加載類時會履行這些靜態的代碼塊,假如static代碼塊有多個,JVM將依照它們在類中湧現的前後次序順次履行它們,每一個代碼塊只會被履行一次。

類的拜訪權限(Y/N)

|| 症結字 || 類 || 包 || 子類 || 其它包 ||
| public | Y | Y | Y | Y |
| protected | Y | Y | Y | N |
| default | Y | Y | N | N |
| private | Y | N | N | N |

public、protected和private三個症結字,可以用於類(外部類)、成員變量和成員函數,默許的拜訪權限是包內有用,當類拜訪權限與成員變量或成員函數的拜訪權限分歧時,選擇最低拜訪權限。

interface/implements/extends/class——

interface用於聲明接口,接口中的辦法只要聲明,沒有完成,拜訪權限可所以public或許默許權限,還可以指定為abstract。

implements用於完成接口,須要完成接口中的一切辦法,可以同時完成多個接口。

extends用於繼續父類或父接口,繼續父類時只能是單繼續,與C++的多繼續分歧,接口繼續支撐多繼續。

class用於聲明類,拜訪權限可所以public或許默許權限,還可以指定為abstract、final,拜訪權限關於頂層類和外部類的限制是分歧的。


abstract——

abstract用於類表現這個類為籠統類,不克不及實例化。

abstract用於辦法表現這個辦法為籠統辦法,只需聲明,不消完成,由子類完成,籠統辦法不克不及用private和static症結字。

上面來側重講一下this和super的應用:

this
        Java症結字this只能用於辦法辦法體內。當一個對象創立後,Java虛擬機(JVM)就會給這個對象分派一個援用本身的指針,這個指針的名字就是this。是以,this只能在類中的非靜態辦法中應用,靜態辦法和靜態的代碼塊中相對不克不及湧現this,這在“Java症結字static、final應用總結”一文中給出了明白說明。而且this只和特定的對象聯系關系,而和睦類聯系關系,統一個類的分歧對象有分歧的this。上面給出一個應用this的綜合實例,以便解釋成績:
 

package org.leizhimin;
public class Test6 {
 private int number;
 private String username;
 private String password;
 private int x = 100;
 public Test6(int n) {
 number = n; // 這個還可以寫為: this.number=n;
 }
 public Test6(int i, String username, String password) {
 // 成員變量和參數同名,成員變量被屏障,用"this.成員變量"的方法拜訪成員變量.
 this.username = username;
 this.password = password;
 }
 // 默許不帶參數的結構辦法
 public Test6() {
 this(0, "未知", "空"); // 經由過程this挪用另外一個結構辦法
 }
 public Test6(String name) {
 this(1, name, "空"); // 經由過程this挪用另外一個結構辦法
 }
 public static void main(String args[]) {
 Test6 t1 = new Test6();
 Test6 t2 = new Test6("旅客");
 t1.outinfo(t1);
 t2.outinfo(t2);
 }
 private void outinfo(Test6 t) {
 System.out.println("-----------");
 System.out.println(t.number);
 System.out.println(t.username);
 System.out.println(t.password);
 f(); // 這個可以寫為: this.f();
 }
 private void f() {
 // 部分變量與成員變量同名,成員變量被屏障,用"this.成員變量"的方法拜訪成員變量.
 int x;
 x = this.x++;
 System.out.println(x);
 System.out.println(this.x);
 }
 
 //前往以後實例的援用
 private Test6 getSelf() {
 return this; 
 }
}

 
運轉成果以下:

-----------
0
未知
空
100
101
-----------
0
旅客
空
100
101

 
        看著下面的例子,解釋在甚麼情形下須要用到this:
        第1、經由過程this挪用另外一個結構辦法,用發是this(參數列表),這個僅僅在類的結構辦法中,其余處所不克不及這麼用。
        第2、函數參數或許函數中的部分變量和成員變量同名的情形下,成員變量被屏障,此時要拜訪成員變量則須要用“this.成員變量名”的方法來援用成員變量。固然,在沒有同名的情形下,可以直接用成員變量的名字,而不消this,用了也不為錯,呵呵。
        第3、在函數中,須要援用該函所屬類確當前對象時刻,直接用this。
        其實這些用法總結都是從對“this是指向對象自己的一個指針”這句話的更深刻的懂得而來的,逝世記否則輕易忘卻並且輕易弄錯,要懂得!
 
super
 
        super症結和this感化相似,是被屏障的成員變量或許成員辦法或變成可見,或許說用來援用被屏障的成員變量和成員成員辦法。
不外super是用在子類中,目標是拜訪直接父類中被屏障的成員,留意是直接父類(就是類之上比來的超類)。上面是一個綜合應用super的例子,有兩個類:一個Father類,一個Father類的子類Son,經由過程這兩個類完整演示了super的用法,一下是代碼:
 

package org.leizhimin;
public class Father {
 public String v="Father";
 public String x="輸入了Father類的public成員變量x!!!";
 
 public Father() {
 System.out.println("Father結構辦法被挪用!");
 }
 
 public Father(String v){
 this.v="Father類的帶參數結構辦法!運轉了.";
 }
 public void outinfo(){
 System.out.println("Father的outinfo辦法被挪用");
 } 
 public static void main(String[] args) {
 // TODO 主動生成辦法存根
 }
}
 
package org.leizhimin;
public class Son extends Father{
 public String v="Son";
 
 public Son() {
 super();   //挪用超類的結構辦法,只能放到第一行.
 System.out.println("Son無參數結構辦法被挪用!");
 //super();   //毛病的,必需放到結構辦法體的最後面.
 } 
 
 public Son(String str){
 super(str);
 System.out.println("Son帶參數結構辦法被挪用!");
 }
 //籠罩了超類成員辦法outinfo()
 public void outinfo(){ 
 System.out.println("Son的outinfo()辦法被挪用");
 } 
 
 public void test(){
 
 String v="哈哈哈哈!";  //部分變量v籠罩了成員變量v和超類變量v
 
 System.out.println("------1-----");
 System.out.println(v);  //輸入部分變量v
 System.out.println(this.v); //輸入(子類)成員變量v
 System.out.println(super.v); //輸入超類成員變量v 
 
 System.out.println("------2-----");
 System.out.println(x);  //輸入超類成員變量v,子類繼續而來
 System.out.println(super.x); //輸入超類成員變量v
 
 System.out.println("------3-----");
 outinfo();  //挪用子類的outinfo()辦法
 this.outinfo(); //挪用子類的outinfo()辦法
 super.outinfo(); //挪用父類的outinfo()辦法
 } 
 
 public static void main(String[] args) {
 new Son().test();
 
 }
}

 
子類Son運轉成果:
 

Father結構辦法被挪用!
Son無參數結構辦法被挪用!
------1-----
哈哈哈哈!
Son
Father
------2-----
輸入了Father類的public成員變量x!!!
輸入了Father類的public成員變量x!!!
------3-----
Son的outinfo()辦法被挪用
Son的outinfo()辦法被挪用
Father的outinfo辦法被挪用

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved