Java第二季

来源:http://www.cnblogs.com/2-NARUTO-2/archive/2017/11/27/7901254.html
-Advertisement-
Play Games

1、封裝 (1)概念 將類的某些信息隱藏在類的內部,不允許外部程式直接訪問,而是通過該類提供的方法來實現對隱藏信息的操作和訪問。 (2)封裝的實現步驟 2、Java中的訪問修飾符 3、繼承 (1)Java中是單繼承 (2)繼承的好處: (1)子類擁有父類的所有屬性和方法 (2)實現代碼復用 (3)繼 ...


 1、封裝

(1)概念

將類的某些信息隱藏在類的內部,不允許外部程式直接訪問,而是通過該類提供的方法來實現對隱藏信息的操作和訪問。

(2)封裝的實現步驟

2、Java中的訪問修飾符

 

3、繼承

(1)Java中是單繼承

(2)繼承的好處:

        (1)子類擁有父類的所有屬性和方法

  (2)實現代碼復用

(3)繼承的語法規則:

  

(4)方法重寫:

什麼是方法的重寫

          如果子類對繼承父類的方法不滿意,是可以重寫父類的繼承的方法的,當調用方法時會優先調用子類的方法。

(5)繼承的初始化順序

         初始化父類再初始化子類。 

         先執行初始化對象中的屬性,再執行構造方法中的初始化。

(6)java中final的使用

final關鍵字

        使用final關鍵字做標識有“最終的”含義。

final可以修飾類、方法、屬性和變數。    

       修飾類,該類不允許被繼承

       修飾方法,該方法不允許被覆蓋或重寫

       修飾屬性,系統不會對其進行隱式初始化(類的初始化屬性必須有值),所以必須賦值或者在構造方法中賦值

       修飾變數,該變數只允許被賦值一次,該變數成為常量

 

(7)Java中的super的使用

       super關鍵字:

               在對象的內部使用,可以代表父類對象。

       1、訪問父類的屬性

              super.age

       2、訪問父類的方法

              super.eat()

   子類的構造的過程當中必須調用其父類的構造方法 相當於super();預設是調用無參的
   如果子類的構造方法中沒有顯示調用父類的構造方法,系統會預設調用父類無參的構造方法.
   如果要顯示的調用父類的構造方法,必須在子類的構造方法第一行中添加super(); 
   如果子類構造方法中既沒有顯示調用父類的構造方法,而父類又沒有無參的構造方法,則編譯出錯.

(8)Java中的Object類

    Object類是所有類的父類,如果一個類沒有使用extends關鍵字明確標識繼承另外一個類,那麼這個類預設繼承Object類,且Object類中的方法適合     所有子類。
1、toString()方法
    在Object類裡面定義toString()方法的時候返回的對象的哈希code碼(對象地址字元串)。
    如果我們在代碼裡面直接輸出一個對象,會輸出這個對象在記憶體中的地址,我們把它稱為哈希碼,哈希碼是通過哈希演算法生成的一個字元串用來.    唯一區分對象的。
可以通過重寫toString()方法表示出對象的屬性。
2、equals()方法
比較的是對象的引用是否是指向同一塊記憶體地址。
一般情況下比較兩個對象時比較他的值是否一致,所有要進行重寫。


public static void main(String[] args)
{
     Dog dog = new Dog();
     Dog dog2 = new Dog();
     if(dog.equals(dog2))
     {
          System.out.print("兩個對象都是相同的");
     }  
     else
     {
          System.out.print("兩個對象都是不相同的");
     }  
}

重寫equals方法:

public static void main(String[] args)
{
     Dog dog = new Dog();
     Dog dog2 = new Dog();
     if(dog.equals(dog2))
     {
          System.out.print("兩個對象都是相同的");
     }  
     else
     {
          System.out.print("兩個對象都是不相同的");
     }  
}

4、多態

(1)引用多態

          父類的引用可以指向本類的對象

          父類的引用可以指向子類的對象

(2)方法多態

          創建本類對象時,調用的方法為本類方法

          創建子類對象時,調用的方法為子類重寫的方法或者繼承的方法

 引用類型轉換: 

 (1)向上類型轉換(隱式/自動類型轉換),是小類型到大類型的轉換

             如:Dog dog=new Dog();Animal animal=dog;//正確,自動類型提升,向上類型轉換

    (2)向下類型轉換(強制類型轉換),是大類型到小類型的轉換

             如:Dog dog1=(Dog)animal;//向下類型轉換

    (3)instanceof運算符,來解決引用對象的類型,避免類型轉換的安全性問題

  Dog dog=new Dog();
  Animal animal=dog;
  Cat cat=(Cat)animal;  
編譯時不會出錯(按Cat類型進行編譯),但運行時會報錯,因為它開闢的是Dog類型的空間,而(無法將引用類型進行轉換)無法將dog對象轉換成Cat類型,並且此方法對程式的安全性有影響。此時應該利用instanceof和if語句結合使用,進行驗證,以保證程式的安全性。
//判斷animal類中是否包含Cat類型的元素,若包含則進行轉換,instanceof返回值為布爾類型。
if(animal instanceof Cat){
    Cat cat=(Cat)animal;
}else{
    System.out.println("無法進行類型轉換");
}

5、抽象類

     (1)語法定義:

               抽象類前使用abstract關鍵字修飾,則該類為抽象類。

     (2)應用場景:

            a、在某些情況下,某個父類只是知道其子類應該包含怎樣的方法,但無法準確知道這些子類如何實現這些方法
            b、從多個具有相同特征的類中抽象出一個抽象類,以這個抽象類作為子類的模板,從而避免了子類設計的隨意性。
  (3)作用:
             限制規定子類必須實現某些方法,但不關註實現細節。
  (4)使用規則:
       a、abstract定義抽象類
             b、abstract定義抽象方法,只有聲明,不需要實現
             c、包含抽象方法的類是抽象類
             d、抽象類中可以包含普通的方法,也可以沒有抽象方法
             e、抽象類不能直接創建,可以定義引用變數
public abstract class Telephone{
     public abstract void call();
     public abstract void message();
}

6、介面

  (1)介面的概念

     介面可以理解為一種特殊的類,由全局常量和公共的抽象方法所組成。

     介面定義了某一批類所需要遵守的規範。

        (2)介面定義

                 和類定義不同,定義介面使用interface關鍵字。

[修飾符] interface abstract 介面名 [extends 父介面1,父介面2……]
{
   //中括弧中為可選項
   零個到多個常量定義……
   零個到多個抽象方法的定義
}

       (3)介面就是用來被繼承、被實現的,修飾符一般建議用public,不能使用private和protected修飾介面。

       (4)介面中的屬性是常量(public static final修飾),系統會自動加上

    (5)介面中的方法只能是抽象方法(public abstract修飾),系統會自動加上
    (6)使用介面:一個類可以實現一個或多個介面,實現介面使用implements關鍵字。java中一個類只能繼承一個父類,可以通過實現多個介面作補充。
[修飾符] class 類名 extends 父類 implements 介面1,介面2……{
    類體部分//如果繼承的是抽象類,需要實現繼承的抽象方法;要實現介面中的抽象方法
}

如果要繼承父類,繼承父類必須在實現介面之前
介面命名時首字母為I,以區分類名。



public interface IPlayGame{
     public void playGame();  
}
public class Psp implements IPlayGame{
     public void playGame(){
           System.out.print("具有了玩游戲的功能");
     }  
}
IPlayGame ip1 = new Psp();
ip2.playGame();

 


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

-Advertisement-
Play Games
更多相關文章
  • 1.部署步驟 1.1.啟動安裝程式 在啟動頁面上選擇Installation,然後按Enter鍵,這將載入SUSE Linux伺服器安裝程式並以普通模式安裝。 1.2.選擇安裝語言 Language和KeyboardLayout都選擇為English(US),並勾選I Agree to the Li ...
  • 背水一戰 Windows 10 之 控制項(控制項基類 - Control): 基礎知識, 焦點相關, 運行時獲取 ControlTemplate 和 DataTemplate 中的元素 ...
  • 一、前言 假設我們的C#解決方案中有多個程式應用,如:Web應用、控制台程式、WPF程式應用和Windows服務應用。 那麼這些非Windows Service應用程式怎麼在代碼中找到Windows服務應用的執行路徑呢? 二、正文 假設該Windows 服務已經啟動,名稱叫SocketService ...
  • 恢復內容開始 線程同步有兩種實現方式: 基於用戶模式實現和用內核對象實現。前者偏於輕量級,性能也更好,但是只能用於同一進程間的線程同步,後者重量級,性能消耗更大,跨進程。 研讀了一下windows核心編程的線程同步以及C#並行編程高級教程的ThreadPool部分,對線程的理解更深了。線程同步一般來 ...
  • 隱式轉換[自動類型轉換]: 兩種類型要相容,原類型值域要小於目標類型值域,可以簡單的理解為由小轉大。 1 public class Test 2 { 3 private void Start() 4 { 5 int a = 10; 6 float b = a;//int 類型隱式轉換為 float ...
  • 構造方法:用於實例化對象。 一般情況下,類或者結構體中都會存在一個預設的無參構造方法。如果我們在類中手動書寫了有參的構造方法,那麼這個無參構造方法就會被覆蓋掉;但是結構體中卻不會被覆蓋,即使我們在結構體中書寫了有參構造方法,無參構造方法依然可以使用。 【在使用單例模式時,我們可以書寫 private ...
  • 返回總目錄 本小節目錄 Decompose Conditional(分解條件表達式) Consolidate Conditional Expression(合併條件表達式) 1Decompose Conditional(分解條件表達式) 概要 你有一個複雜的條件(if-else if-else)語句 ...
  • 應該是和數組差不多,但是這個有很多內置的方法#定義a=["wuchao","jinxing","123","456","789","110"]基本操作 #切片print(a[1:4])print(a[2:])#最後一個為空,則取到最後,為-1則取到倒數第二個,以此類推print(a[4:2:2])# ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...