Java功底之static、final、this、super
看完本文后,請看轉自鍵行天下的博客:
http://blog.csdn.net/chensheng913/archive/2004/07/05/34564.aspx
一.static
靜態方法:
??????? 我們在寫System.in的時候并沒有用new去創建它,這是因為它是一個靜態的方法,這個意味著告訴Java編譯器,我這個方法不需要創建一個此類的對象即可使用。一般說來,靜態方法常常為應用程序中的其他類提供一些實用工具所用,Java的類庫中大量的靜態方法也是出于這個目的的。
靜態變量:
??????? 靜態變量也叫類變量,所有的此類實例共享此靜態變量,也就是說在類裝載時,只分配一塊存儲空間,所有此類的對象都可以操控此塊存儲空間(final不討論)。在虛擬機加載的時候,類變量會優于其他非static變量。在繼承時候,會先加載化父類的static變量,然后是子類的。
二.final
final成員:
??????? 在定義類中變量的時候加上了final,表示一旦被初始化便不可改變,這里不可改變的意思對基本類型來說是其值不可變,而對于對象變量來說其引用不可再變。我們也經常稱為常量(常量命名規范為大寫)。
final方法:
??????? 將方法聲明為final,那就說明你已經知道這個方法提供的功能已經滿足你要求,不需要進行擴展,并且也不允許任何從此類繼承的類來覆寫這個方法,但是繼承仍然可以繼承這個方法,也就是說可以直接使用。
final類:
??????? 當你將final用于類身上時,表示類是無法被任何人繼承的,那也就意味此類的設計已被認為很完美而不需要進行修改或擴展。
三.this和super
??????? Java中this通常指當前對象,super則指父類的。當你想要引用當前對象的某個方法或某個成員,可以利用this來實現這個目的。this的另一個用途是調用當前對象的另一個構造函數。而如果引用父類的某個東西,則是super。在繼承的過程中,如果子類的方法覆蓋了父類的方法,想調用父類被覆蓋的方法,就得用到super。其中比較特殊的是在構造函數中,this和super不是用“.”連接一個方法或成員,而是用super后加參數的是用來調用父類中具有相同形式的構造函數(例:super()),this后加參數則調用的是當前具有相同參數的構造函數(例:this())。在很多地方,有this更能使程序讀的更流暢些。
final?public class T3 {
?/**
? * @param args
? */
?public static void main(String[] args) {
??lable: {
???int i = 0;
???int a = 9;
???int b;
???b = a + i;
???while (true) {
????i++;
????if (i == 2) {
?????break lable; //tiao dao flag
????}
???}
??}// flag
?}
?public void getXXX(String... strings) {
??lable: {
???int i = 0;
???int a = 9;
???int b;
???b = a + i;
???while (true) {
????i++;
????if (i == 2) {
?????break lable; //tiao dao flag
????}
???}
??}// flag
?}
?public void getXXXX(int a, String... strings) {
?}
?// public void getXXXX(String... strings, int a) {//error
?//
?// }
?static final?public void CheckXXXX() {
?}
}
?super.www="kf";
??this.www="rty";
from:?http://blog.csdn.net/it_man/article/details/1372721
總結
以上是生活随笔為你收集整理的Java功底之static、final、this、super的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA线程池原理以及几种线程池类型介绍
- 下一篇: 深度学习教程 TensorFlow an