Java入門——(2)面對對象(上)

来源:http://www.cnblogs.com/gdwkong/archive/2017/06/27/7087324.html
-Advertisement-
Play Games

關鍵詞:面對對象、類、、構造方法、this、static、內部類 一、面對對象的概念:把解決的問題安裝一定規則劃分為多個獨立的對象,然後通過調用對象的方法來解決問題。其特點可概括為封裝性、繼承性、多態性。 1、封裝性:面對對象的核心,將對象的屬性和行為封裝起來,不需要讓外界知道具體實現細節,這就是封 ...


  關鍵詞:面對對象、類、、構造方法、this、static、內部類   一、面對對象的概念:把解決的問題安裝一定規則劃分為多個獨立的對象,然後通過調用對象的方法來解決問題。其特點可概括為封裝性、繼承性、多態性。     1、封裝性:面對對象的核心,將對象的屬性和行為封裝起來,不需要讓外界知道具體實現細節,這就是封裝思想。     2、繼承性:主要描述的是類與類之間的關係,通過繼承,可以在無需重新編寫原有類的情況下,對原有類的功能進行擴展。     3、多態性:是在程式中允許出現重名現象,它指在一個類中定義的屬性和方法被其他類繼承後,他們可以具有不同的數據類型或表現出不同的行為,這使得同一個屬性和方法在不同的類中具有不同的語義。 二、類與對象      1、類是對象的抽象,它用於描述一組對象的共同特征和行為。類中可以定義成員變數和成員方法,其中成員變數用於描述對象的特征,也稱作屬性,成員方法用於描述對象的行為,可簡稱方法。          如何創建類:
1 class Person{
2      //定義int 類型的變數
3       int age;
4      //定義speak()方法
5       void speak (){
6             System.out.println(“***”)
7       }
8 } //Person 類名,age 是成員變數,speak()成員方法
2、對象的創建與使用:      創建:類名 對象名= new 類名();//實例對象      使用: 對象引用.對象成員;      實例化對象時,Java虛擬機會自動為成員變數進行初始化,針對不同類型的成員變數,賦予不同的初始值。
表:成員變數的初始值
成員變數類 初始值 成員變數類 初始值
    byte   0 double 0.0D
short 0 char 空字元,‘\u0000'
int 0 boolean false
long  0L 引用數據類型 null
float 0.0F    
在Java中,null是一種特殊的常量,當一個變數的值為null時,則表示該變數不指向任何一個對象,變成垃圾被回收。    3、所謂的類的封裝是指定義一個類時,將類中的屬性私有化,即利用private 關鍵字來修飾,私有屬性只能在它所在類中被訪問。為了能讓外界訪問私有屬性,需要提供一些使用public 修飾的公用方法,其中包括用於獲得屬性值得getXXX()方法和設置屬性值得setXXX()方法。  
 1 class Student{
 2     private String name;    //將name屬性私有化
 3     private int age;        //將age屬性私有化
 4     //下麵是公有的getXXX()和setXXX()方法
 5     public String getName (){
 6         return name;
 7     }
 8     public void setName(String stuName){
 9         name = stuName ;
10     }
11     public int getAge (){
12         return age ;
13     }
14     public void setAge(int stuAge){
15         //下麵是對傳入的參數進行檢查
16         if(stuAge<=0){
17             System.out.println("年齡不合法");
18         }else {
19             age = stuAge ;        //對屬性賦值
20         }
21     }
22     public void introduce(){
23         System.out.println("大家好,我叫"+name+",我今年"+age+"歲!");
24     }
25 }
26 public class Example01{
27     public static void main(String[] args){
28         Student stu  = new Student();
29         stu.setAge(-30);
30         stu.setName("李芳");
31         stu.introduce();
32     }
33 }
  三、構造方法 1、構造方法:構造方法是類中一個特殊成員,它會在實例化對象時被自動調用。 2、構造方法的特點:  ①方法名與類名相同;

 ②在方法名前面沒有返回值類型的聲明;

 ③在方法中不能使用return語句返回一個值;

 1 class Person{
 2       //構造方法
 3      public Person(){
 4           //無參構造方法
 5       }
 6      public Person(int age){
 7           age = a;   //有參構造方法
 8      }
 9      public void speak(){
10           System.out.println(“I am” +age+”years old !");
11      }
12 }
13 public  class Example{
14      public  static void main (String [] args){
15          Person p = new Person(20);  //實例化Person對象
16          p.speak();
17      }
18 }

 

3、構造方法的重載:與普通方法一樣,方法名相同,只需要參數類型或參數個數不同即可。      一般情況下,構造方法通常會使用public來修飾。     四、this 關鍵字 1、this關鍵字三種常用方法:

①通過this關鍵字可以明確地訪問一個類的成員變數,解決與局部變數名稱衝突問題。

 1 class Person{
 2      int age ;
 3      public Person(int age){
 4           this.age = age ;   //訪問成員變數
 5      }
 6      public int getAge(){
 7          return this .age;
 8     }
 9  }

②通過this關鍵字調用成員方法。

③構造方法是在實例化對象時被Java虛擬機自動調用的,在程式中不能像調用其他方法一樣去調用構造方法,但可以在一個構造方法中使用“this(【參數1,參數2……】)”的形式來調用其他的構造方法。

註意點:

①只能在構造方法中使用this 調用其他的構造方法,不能在成員方法中使用。

②在構造方法中,使用this 調用構造方法的語句必須位於第一行,且只能出現一次。

③不能在一個類的兩個構造方法中使用this互相調用。

  五、static關鍵字 1、使用static關鍵字來修飾成員變數,該變數被作靜態變數。靜態變數被所有實例共用,可以使用“類名.變數”的形式來訪問。     註意:static關鍵字只能用於修飾成員變數,不能用於修飾局部變數。 2、靜態方法:在類中定義的方法前加上static關鍵字,可在不創建對象的情況下調用某方法。可使用“類名.方法名”的形式訪問。      註意:在一個靜態方法中只能訪問static修飾的成員,靜態方法在被調用時可以創建任何對象。 3、靜態代碼塊:用static關鍵字修飾的代碼塊稱為靜態代碼塊,當類被載入時,靜態代碼塊會被執行,由於類只載入異常,因此靜態代碼塊只能執行一次。   4、單例模式:
 1 class Single{
 2      private static Single INSTANCE = new Single();
 3      private Single(){}
 4      public static Single getInstance(){  
 5          return INSTANCE ; 
 6        }
 7 }
 8 //上面單例又可寫成以下形式
 9 class Single{
10      private Single(){}
11      public static final Single INSTANCE = new Single();
/*變數名INSTANCE的前面有三個修飾符,其中,public的作用是允許外部直接訪問該變數,static 的作用是 讓外部可以使用
“類名.變數名“的方式來訪問變數,final的作用是禁止外部對該變數進行修改。*/ 12 } 13 14 class Example { 15 public static void main(String[] args){ 16 Single s = Single.getInstance(); // getInstance()方法是獲得Single類實例對象的唯一途徑,Single 類是一個單例的類 17 } 18 }
被關鍵字final修飾的變數為常量,其值不可變。   六、內部類:根據內部類的位置、修飾符和定義的方式可分為成員內部類、靜態內部類、方法內部類。 1、創建內部類對象的具體語法格式:     外部類名.內部類名 變數名 = new 外部類名().new 內部類();
 1 class Outer{
 2     private int num = 4;              //定義類的成員變數
 3     //下麵的代碼定義了一個成員方法,方法中訪問內部類
 4     public void test(){
 5         Inner inner = new Inner();
 6         inner.show();
 7     }
 8     //下麵的代碼定義了一個成員內部類
 9     class Inner{
10         void show(){
11             //在成員內部類的方法中訪問外部類的成員變數
12             System.out.println("num = "+num);
13         }
14     }
15 }
16 public class Example16 {
17     public static void main(String[] args){
18         Outer outer = new Outer();               //創建外部類對象
19         outer.test();                                 //調用test()方法
20     }
21 }
22 //直接創建內部類對象示例
23 public class Example16 {
24     public static void main(String[] args){
25         Outer.Inner inner = new Outer().Inner() ;               //創建內部類對象
26         inner.show();                                 //調用show()方法
27     }
28 }
29 //當內部類被聲明為私有,外界將無法訪問。
2、創建靜態內部類對象的具體語法格式:      外部類名.內部類名 變數名 = new 外部類名.內部類名();
 1 class Outer{
 2     private static int num = 6;              //定義類的成員變數
 3     //下麵的代碼定義了一個靜態內部類
 4     static class Inner{
 5         void show(){
 6             System.out.println("num = "+num);
 7         }
 8     }
 9 }
10 public class Example16 {
11     public static void main(String[] args){
12         Out.Inner inner = new Out.Inner();             //創建內部類對象
13             inner.show();                                 //調用內部類的方法
14     }
15 }

     註意:①在靜態內部類中只能訪問外部類的靜態成員。

              ②在靜態內部類中可以定義靜態成員,而在非靜態的內部類中不允許定義靜態的成員。   3、方法內部類:是指在成員方法中定義的類,它只能在當前方法中被使用。方法內部類可以訪問外部類的成員變數。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • python中的多線程其實並不是真正的多線程,如果想要充分地使用多核CPU的資源,在python中大部分情況需要使用多進程。Python提供了非常好用的多進程包multiprocessing,只需要定義一個函數,Python會完成其他所有事情。藉助這個包,可以輕鬆完成從單進程到併發執行的轉換。mul ...
  • 轉載需註明原文地址和作者兩項內容。 正則表達式目的是能夠快速處理字元串內容,主要用於找出指定的字元串,配合其他操作完成任務。使用正則表達式時要瞭解自己語言的特性,python中的正則表達式預設情況是貪婪模式,也就是不限制的情況下會儘可能多得匹配字元串。 0x00 基礎語法 0x01 python正則 ...
  • 廢話不說,直接給思路 gitlab重部署後新加用戶不發送激活郵件,配置如下: 首先確認配置沒問題,其次查看日誌production.log log沒有給出錯誤信息。那就直接開大招 確保method為smtp,錯了就是配置寫錯了或者沒被正確載入 確保配置是我們要的 發送測試郵件,此時會列印詳細錯誤 T ...
  • 1、把lib.py里的代碼導入index.py,然後使用lib.py代碼: 導入之後會生成一個.pyc文件,即位元組碼文件。 2、解釋器 即用python來執行hello.py腳本. 3、編碼的基本知識 unicode即萬國碼,utf8是對unicode的精簡,gbk是與utf8同級別的編碼方式。 4 ...
  • 一、線程創建 註解:Thread(group=None,target=None,name=None,args=(),kwargs={})group:線程組,目前還沒有實現,庫引用時提示必須是Nonetarget:要執行的方法name:線程名args/kwargs:要傳入方法的參數,args和kwar ...
  • 模塊安裝: 數據操作用到的模塊pymysql,需要通過pip install pymysql進行安裝。 redis操作用的模塊是redis,需要通過pip install redis進行安裝。 檢驗是否安裝成功:進入到Python命令行模式,輸入import pymysql、 import redi ...
  • 簡介 特點 (1)優於OC,快速,安全 (2)取消了預編譯指令包括巨集定義(OC用的太多了) (3)取消了OC指針和不安全訪問的使用(看不到星星了) (4)捨棄 Objective C 早期應用 Smalltalk 的語法,全面改為點語法 (5)3.0中對Foundation框架做了很多改變,去除了N ...
  • JVM的四種引用狀態 在Java虛擬機5:Java垃圾回收(GC)機制詳解一文中,有簡單提到過JVM的四種引用狀態,當時只是簡單學習,知道有這麼一個概念,對四種引用狀態理解不深。這兩天重看虛擬機這部分的時候,寫了很多例子詳細研究了一下JVM的幾種引用,對於JVM的引用理解加深了不少,因此總結寫一篇文 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...