7天學完Java基礎之2/7

来源:https://www.cnblogs.com/train99999/archive/2019/05/16/10873169.html
-Advertisement-
Play Games

面向對象 面向對象的思想就是值我們要實現一個共功能的時候,我們不自己去做,而是找別人幫我們去做,幫我們去做的這個人就是對象。面向對象強調的是誰來幫我實現這個功能。 類與對象的關係 類 :是一組相關屬性和行為的集合,類可以看成是事物的模板 對象 :對象是一類事物的具體體現,對象是類的一個實列,必然具備 ...


面向對象

面向對象的思想就是值我們要實現一個共功能的時候,我們不自己去做,而是找別人幫我們去做,幫我們去做的這個人就是對象。面向對象強調的是誰來幫我實現這個功能。

類與對象的關係

:是一組相關屬性和行為的集合,類可以看成是事物的模板

對象:對象是一類事物的具體體現,對象是類的一個實列,必然具備該類的事物屬性和行為。

類是對象的模板,對象是類的實體

下麵來定義一個學生類

//類具有屬性和行為,屬性也叫做成員變數,行為也叫做成員方法
public class Student{
    //定義成員變數,因為每一個學生都有不同的姓名和年齡,所以可以把這兩個作為成員變數,成員變數要定義在類中,方法外面,如果定義在方法裡面,就叫做局部變數。變數是有作用域的,成員變數的作用域在整個類中,局部變數的作用域在該方法的裡面。
    String name;
    int age;
    //定義方法,每一個學生都有著吃飯,睡覺,學習的行為,也就是方法
    public void eat(){
        System.out.println("我是"+name+"在吃飯");
    }
    public void sleep(){
        System.out.println("我是"+name+"在睡覺");
    }
    public void study(){
        System.out.println(name+"今年"+age+"歲了,要認真學習了");
    }
}

剛剛定義好了類,現在讓我們來使用他吧

類的使用需要創建對象

//創建對象的格式
//類的名稱 對象名 = new 類名稱();
//成員變數的使用   對象名.成員變數
//成員方法的使用    對象名.成員方法()
public class AStudent{
    public static void main(String[] args){
        /*創建Student類對象,對象創建好之後就可以使用類了,也就是說可以
        使用對象名去調用類的成員方法,還可以對該類的成員變數賦值*/
        Student stu = new Student();
        //對成員變數賦值,將右側的劉備賦值交給stu對象當中的name成員變數
        stu.name = "劉備";
        stu.age = "18";
        //調用成員方法
        stu.eat();
        stu.sleep();
        stu.study();
    }
}

使用對象類型作為方法的參數

什麼是對象類型,new出來的就是對象類型

public class AStudent{
    public static void main(String[] args){
        Student one = new Student();
        one.age = 18;
        one.name = "新垣結衣";
        method(one);
    }
    //以Student類做為參數傳遞,傳遞進來的對象中的方法和變數可以使用param參數名稱來調用
    public static void method(Student param) {
        System.out.println(param.name);//新垣結衣
        System.out.println(param.age);//18
        param.study();//新垣結衣今年18歲了,要認真學習了
    }

}

使用對象類型作為方法的返回值

  public static void main(String[] args){
        //返回值類型是一個Student,所以需要Student來接收該返回值
        Student two = method();//method()方法的返回值類型是Student;
        two.study();
    }
    public static Student method() {
       Student one = new Student();
       one.name="曹操";
       one.age = 90;
       
       return one;

局部變數與成員變數的不同

  1. 定義的位置不一樣

    局部變數:在方法的內部

    成員變數:在方法的外部,直接寫在類當中

  2. 作用範圍不一樣

    局部變數:只有方法當中才可以使用,出了方法就不能再用

    成員變數:整個類都可以通用

  3. 預設值不一樣

    局部變數:沒有預設值,如果想使用,必須要手動賦值

    成員變數:如果沒有賦值,會有預設值,規則和數組一樣

面向對象的三大特征之封裝性

  1. 方法就是一種封裝
  2. 關鍵字private也是一種封裝

封裝就是將一些細節信息隱藏起來,對於外界不可見

private關鍵字一旦用於成員變數,那麼該成員變數就只能夠在本來中訪問,不能再其它類中訪問

public class Student{
    String name;
    //寫在對age設置private,使他只能夠再本類中訪問
    private int age;

    public void  setAge(int num){
        //未來避免年齡傳入進來的不合理加上if判斷語句
        //條件為真就把num賦值給age
        if(0<num&&num<150){
            age = num;
        }else{
            System.out.println("年齡不合理");
        }
    }
    public int getAge(){
        return age;
    }
}

現在寫多一個類來間接訪問age;

public class AStudent{
    public static void main(String[] args){
     //創建了Student對象,就可以使用她的變數和方法了
    Student one = new Student();
    //調用了方法setAge.傳遞了參數
    one.setAge(18);//int age = 18;
    //設置了private的要通過setAge來訪問,沒有設置private的可以直接對象名.成員變數來訪問
    System.out.println(one.name+"  "+one.getAge());
    }
}

構造方法

構造方法是專門用來創建對象的方法,當我們通過關鍵字new來創建對象是,其實就是再調用構造方法,構造方法的名稱必須和所在類的名稱完全一樣,構造方法不要寫返回值類型。

如果沒有編寫任何構造方法,那麼編譯器將會預設贈送一個構造方法,沒有參數,沒有方法體。

一旦自己編寫了構造方法,那麼編譯器將不會給你贈送構造方法

格式:

public 類名稱(參數類型 參數名稱){方法體}

public class Student{
    public Student(//我是參數){
        System.out.println("構造方法被調用了");//我是方法體
    }
}
//new 對象就是在調用構造方法
public class AStudent{
    public static void main(String[] args){
        //構造方法new對象的時候就被執行
        Student stu = new Student();//創建Student對象,就是在調用Student的構造方法
        //運行程式將會得到  構造方法被調用了
    }
}

定義一個標準類

//new 對象就是在調用構造方法
public class AStudent{
    public static void main(String[] args) {
        Student one = new Student();
        one.setAge(20);
        one.setName("孫權");
        System.out.println("姓名--"+one.getName()+"   年齡--"+one.getAge());

        Student two = new Student("曹操",30);
        System.out.println("姓名--"+two.getName()+"   年齡--"+two.getAge());
    }
}

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

-Advertisement-
Play Games
更多相關文章
  • 上一次留給大家去做的實踐,不知道大家執行的怎麼樣了呢。 我們通過一個簡單的練習,完成了一個控制開關。那現在,我們打算將遙控器的每個插槽,對應到一個命令這樣就要遙控器變成“調用者”。當按下按鈕,相應命令對象的execute()方法就會被調用,其結果就是,接收者(例如電燈、風扇、音響)的動作被調用。 實 ...
  • 依賴倒置原則: 一般來說我們認為作為底層基礎框架的邏輯是不應該依賴於上層邏輯的, 所以我們設計軟體時也經常是: 需求 - 上層邏輯(直接實現需求) - 發現需要固化的邏輯 - 開發底層模塊 - 然後上層調用底層邏輯. 但是這樣做一開始是沒問題的, 但是當上層劇烈變化時, 會不斷的侵染底層邏輯, 底層 ...
  • 開篇先嘚啵 昨天寫到哪了? 睡醒就忘了... ... 不過聰明伶俐的博主,僅用1秒鐘就想起來了 我們昨天學了一個pandas的類型series 並且會創建了,厲不厲害 對於一個新的數據結構來說 額,不對,對於python任意的數據結構來說 或者換句話,對於任何對象來說 看我,就沒有對象... ... ...
  • 一、問題描述 給定兩個字元串,求解這兩個字元串的最長公共子序列(Longest Common Sequence)。比如字元串1:BDCABA;字元串2:ABCBDAB。則這兩個字元串的最長公共子序列長度為4,最長公共子序列是:BCBA 二、演算法求解 這是一個動態規劃的題目。對於可用動態規劃求解的問題 ...
  • 【併發編程】Future模式添加Callback及Promise 模式 ...
  • 我買的是Mac Mini(late 2014)中配,內置5400轉1T機械硬碟,該配置即使到了2019年安裝macOS Mojave系統依舊是夠用的,但硬碟嚴重拖累了運行的速度。之前考慮到更換內置sata介面硬碟的操作略微繁瑣,因此使用外置SSD的方式,將系統安裝在外置SSD上,速度的確得到了提升,... ...
  • 1. 獲取數據 1.1 導入sklearn數據集 sklearn中包含了大量的優質的數據集,在你學習機器學習的過程中,你可以通過使用這些數據集實現出不同的模型,從而提高你的動手實踐能力,同時這個過程也可以加深你對理論知識的理解和把握。(這一步我也亟需加強,一起加油!^-^) 首先呢,要想使用skle ...
  • 大家晚上好,最近忙每天忙於項目沒有時間更新自己的博客,時間就是海綿嘛硬擠擠就是有的,咂看標題" 流程圖 ",編程界的一個不可或缺的技能,特別是在做複雜的邏輯的時候要處理好每一步的關係,在數據中講就是數據之間的關聯關係,或者關聯模型等,通俗點也就是父子,母子等關係。 首先給大家介紹幾款畫流程圖的軟體: ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...