java學習筆記之面向對象static,final關鍵字

来源:http://www.cnblogs.com/xuzhaocai/archive/2017/12/21/8076465.html
-Advertisement-
Play Games

java學習筆記之面向對象static,final關鍵字 一.static關鍵字 1.概述: static靜態的,被static修飾的成員屬於類,不屬於單個對象,被所有對象所共用,存在靜態區中,靜態的成員優先於對象載入到記憶體中。 2.statc修飾成員的使用方式:(被static修飾的成員變數有預設 ...


java學習筆記之面向對象static,final關鍵字

一.static關鍵字

1.概述:

  static靜態的,被static修飾的成員屬於類,不屬於單個對象,被所有對象所共用,存在靜態區中,靜態的成員優先於對象載入到記憶體中。

2.statc修飾成員的使用方式:(被static修飾的成員變數有預設值)

  

/*
1.可以通過對象直接使用,不推薦使用
2.通過類名調用靜態成員
    類名.靜態成員變數
    類名.靜態成員方法
*/

3.static的特點

 

/*
1.在同一個類中,靜態成員只能訪問靜態成員,非靜態成員可以訪問靜態成員跟非靜態成員。原因:靜態成員優先載入到記憶體中,而非靜態的成員只有在創建對象時才會載入到記憶體中。
2.main方法為靜態成員方法,僅僅作為程式的執行入口,不屬於某個類,可以定義到任意類中。
*/

4.靜態代碼塊:

  代碼塊:指被{}包裹起來的代碼區域

  

/*
1.局部代碼塊:
    定義在局部位置的(方法內)的代碼塊,主要作用是改變變數的作用域;
2.構造代碼塊:
    定義在成員位置(類中方法外)的代碼塊,構造代碼塊屬於每一個對象,每創建一次對象,就會執行一次。優先於構造方法執行;
    作用:《1》給成員變數賦值《2》將構造方法中的共性代碼抽取出來,提高代碼的復用性
3.靜態代碼塊:
    定義在成員位置的(類中方法外)的代碼塊,被static修飾。靜態代碼塊屬於類,不屬於對象,終身只執行一次,最先執行(靜態優先於非靜態,優先於對象);作用:《1》給靜態變數賦值《2》應用於項目的初始化
*/

5.static多態調用中,編譯跟運行;

  編譯:看父類,父類有編譯成功,父類沒有編譯失敗;

  運行:

    成員變數:都看父類

    成員方法:非靜態運行子類重寫

          靜態運行父類的靜態方法(和子類沒有關係,多態表現的是父類的形態);

  原因:靜態方法屬於類,不屬於對象,靜態方法更沒有重寫這一說

      對象的多態性,靜態和對象無關,父類的引用.靜態方法,調用的是父類的靜態方法

二.final關鍵字

1.理解:

  final最終的,不能更改的;

2.final特點:

/*
1.  final修飾類時:被final修飾的類不能被繼承,其他不變,可以繼承其他類,也叫太監類;
2.  修飾成員方法時:該成員方法是一個最終方法,不能被子類重寫,可以被繼承使用;
3.  修飾變數時:被修飾的變數是一個常量,其中值不能發生改變,一次賦值終生不變,局部變數只有final一個修飾符;
4.  修飾成員變數時:是一個常量,其值只能賦值一次,必須在創建對象之前賦值,被修飾的成員變數必須顯示賦值:《1》定義的時候顯示賦值《2》使用構造代碼塊《3》使用構造方法
*/

三.四種許可權修飾符

1.private:私有的,僅同類訪問

2.預設:就是不寫修飾符,相同包下訪問

3.protected:受保護的;相同包或者不同包下的子類訪問

4.public:公共的;同一個項目下

四.內部類

1.內部類概念:

  定義在類內部的類 

2.內部類的分類:

  (1)局部內部類:定義在其他類方法中的類;

  (2)成員內部類:定義在成員位置的類;

3.成員內部類的使用:

  (1).定義格式

    修飾符 class  外部類名{

      修飾符  class 內部類名{

        成員變數;

        成員方法

      }

    }

1 //定義外部類Person
2 public  class Person {
3     //定義一個成員內部類Hert
4    public class Hert{
5         
6     }
7 
8 }    

 

  (2)成員內部類的使用格式

    外部類名.內部類名   變數名  = new 外部類名().new 內部類名();

    變數名.成員變數

    變數名.成員方法

  (3)成員內部類和外部類成員變數同名訪問問題:

4.局部內部類的使用

  (1).格式:

    修飾符  class  外部類名{

      修飾符 返回值  方法名(){

        (final) class 內部類名{

           成員變數

           成員方法;

        }

        //使用

        內部類名  變數名  = new 內部類名();

        變數名.成員變數;

        變數名.成員方法;

      }

    }

  (2)局部內部類的使用方式:

     局部內部類和局部變數一樣,作用域在方法中,方法彈棧就失效了,所以定義完了局部內部類需要在方法中使用;

五.匿名內部類

1.概念:沒有名字的局部內部類

2.作用:簡化代碼,把創建子類/實現類,重寫方法,創建子類/實現類對象合成一步;

3.格式:

  

1 new 父類/介面(){
2   重寫父類或者介面的方法  
3 };

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 全文檢索這個系列在幾前年寫過lucene的文章,而現在看來它確實已經老了,它的兒子孫子都出來了,已經成為現在檢索行列的主流,像solr,elasticsearch等,今天我們主要來看一個solr在aspnetcore里的使用,也就是增刪改查之類的,比較容易! nuget包:solrnet 註入方式: ...
  • Vivado是Xilinx(賽靈思)公司出品的開發軟體平臺,適用於Zedboard開發板。本文介紹了Vivado2017.3的在Win10安裝和可能遇到的問題。 ...
  • 數據模型是開發軟體的最重要的部分,因為它們對應用程式有著深遠的影響:不僅是軟體的編寫方式,而且也影響我們如何解決的問題的方式。第二篇讀書筆記,我們聊一聊數據模型的設計。 1.數據模型的分層 作為一個開發者來說,在一個複雜的應用程式中,是存在很多 分層模型 的,但基本思想還是一樣的:每一層都提供了一個 ...
  • 基於cookie做用戶驗證時, 敏感信息不適合放在cookie中. a. Session原理 cookie是保存在用戶瀏覽器端的鍵值對 session是保存在伺服器端的鍵值對 首先生成一個隨機字元串, 並只將隨機字元串通過cookie保存在瀏覽器端 在隨機字元串對應的字典中, 設置相應的字典 1 c ...
  • #函數定義def f(): print('love Q')f()##參數#形參和實參def add(a,b): print(a+b)add(7,5)def print_info(name,age): print('name:%s' % name) print('age:%d' % age)print ...
  • 緩衝區,位元組將從中取出 作為一種數據源:將其與FilterInputStream對象相連以提供有用介面 字元串。底層實現實際使用的是StringBuffer 作為一種數據源:將其與FilterInputStream對象相連以提供有用介面 字元串,表示文件名、文件或FileDescriptor對象 作 ...
  • 1.1 文件處理 1.1.1 打開文件過程 在Python中,打開文件,得到文件句柄並賦值給一個變數,預設打開模式就為r f=open(r'a.txt','w',encoding='utf-8') print(f.writable()) f.write('1111\n') f.write('2222 ...
  • 1、操作日誌 logging.basicConfig:日誌的統一處理器,對日誌的輸出格式和方式做配置日誌級別等級CRITICAL > ERROR > WARNING > INFO > EDBUG level設定級別以及以上級別的才會列印,這裡註意大小寫! 列印日誌信息在控制台或輸出在一個文件示例: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...