Java基礎學習-面向對象

      網友投稿 872 2022-05-29

      Day02面向對象

      面向過程:實現一個功能,詳細處理每一個細節

      面寫對象:實現一個功能,不關心步驟

      三個特征:封裝,繼承和多態

      類:一組相關屬性和行為的集合。

      屬性:成員變量,在方法外,類內

      行為:main類中的成員方法,不寫static關鍵字,main中的可以寫

      類是抽象的,對象是具體的。

      類是對象的模板。對象是類的實體。實例化–創建

      導包:import 包名稱.類名稱;

      創建格式:類名 對象名 = new 類名();

      使用成員變量:對象名.成員變量名

      使用成員方法:對象名.成員方法名();

      創建方法:修飾符 類名 方法名(參數類型 參數名) { }

      創建對象時,new一個對象,成員方法的地址放入堆中。

      類名 對象名1 = new 類名();//與對象名不同地址

      類名 對象名1 = 對象名;//與對象名同地址

      1.使用對象類型作為方法參數:

      修飾符 返回值類型 方法名(類名 對象名3){ 對象名3.方法名0 }。

      調用:方法名(對象名1);棧中{ 對象名3 }傳遞的是地址值。與對象名1地址一樣。

      2.使用對象類型作為返回值:也是返回對象的地址

      局部變量:方法的內部,沒有默認值,**方法的參數是局部變量。**位于棧內存。隨著方法進棧而誕生。

      成員變量:在方法的外部,寫在類當中,整個類通用,有默認值。位于堆內存。隨著對象創建而誕生,隨著對象被垃圾回收而消失。

      方法就是一種封裝,關鍵字private也是一種封裝。

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

      用private關鍵字將需要保護的成員變量進行修飾。只能在本類中進行使用,超出本類不能直接訪問。只能間接訪問進行設置

      ----setAge(int age){ this.age = age; } set成員變量名{首字母大寫}()setXxx,不能有返回值類型。參數類型與成員變量進行對應。

      ----getAge(return age;) 獲取私有數據,間接訪問。不能有參數。返回值類型與成員變量進行對應。

      注意:對于Boolean類型,Getter方法要寫成isXxx形式,Setter的setXxx規則不變。

      Java基礎學習-面向對象

      方法的局部變量和類中的成員變量重名,就近原則,優先使用局部變量。

      本類訪問成員變量:this.成員變量名 通過誰調用,誰就是this

      創建方法,使用new就是在調用構造方法

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

      構造方法的名稱與所在類名稱完全一樣

      構造方法沒有返回值類型,沒有void

      構造方法中不能return一個具體的返回值

      編譯器會設置默認贈送一個構造方法,一但寫了至少一個構造方法,默認構造方法則消失。

      構造方法也是可以進行重載的。

      所有的成員變量都要使用private關鍵字

      為每一個成員變量編寫Getter/Setter方法

      編寫一個無參數的構造方法

      編寫一個全參數的構造方法

      使用Alt + Insert 進行補全Getter/Setter方法 。或者code + Generate

      Application Programming Interface 應用程序編程接口

      JDK是使用類的說明文檔。類名第一個字母大寫,方法都是小寫。

      Scanner,必須有參

      實現鍵盤輸入數據,引用類型的一般步驟:導包,創建,使用。

      只有Java.lang包下的內容不需要導包。

      System.in 從鍵盤輸入。 對象名.nextInt() 獲取輸入 數字,字符串是next()

      new 類名().成員變量名 = 賦值;

      匿名對象只能使用唯一一次,下次再用不得不再創建新對象。

      例如輸入:

      int num = new Scanner(System.in).nextInt();

      使用匿名對象進行傳參:

      method ( new Scanner ( System.in ) );

      使用匿名對象進行返回:

      return new Scanner( System,in ) ;

      import java.util.Random; Random r = new Random(); int num = r.nextInt(3) ; [0,3)

      1

      2

      3

      對象名[ ] array = new 對象名[ 3 ]; list.geti 快速生成

      存儲的是對象的地址。

      數組一但創建長度不可改變。ArrayList 可以改變,其實是復制到一個更大的數組。

      泛型,裝在集合中所有元素,只能為引用類型,不能是基本類型。

      ArrayList list = new ArrayList<>(); list.add("XXX");//添加, boolean success = list("xxx");//其返回值是否添加成功 list.get(0)//獲取當前元素,參數是索引,返回值是對應位置的元素 list.remove(0)//刪除元素,參數為索引,返回值是被刪除的元素 list.size() // 集合長度,返回元素個數

      1

      2

      3

      4

      5

      6

      7

      向 集合 Arraylist存儲基本類型,使用基本類型的”包裝類“。

      int – Integer , char – Character , 其他均為首字母大寫

      自動裝箱,基本類型–>包裝類型

      自動拆箱,包裝類型–>基本類型

      集合也是可以作為方法的參數的。傳遞的是地址值,記住泛型格式一致

      字符串內容是常量,字符串是可以共享使用,字符串String str , str保存的是地址值,字符串中 + 號是拼接。

      字符串效果相當于是char[ ]字符數組,但底層是byte[ ]字節數組,即都會轉為byte進行與字符串對象進行對應。

      public String(char[ ] array)//,根據字符數組內容創建 public String(byte[ ] array), byte[ ] byteArray = {97, 98}; String str = new String(byteArray);

      1

      2

      3

      4

      5

      6

      7

      直接寫上雙引號,就是字符串對象。存在字符串常量池(在堆中)中。字符串池的對象是指向byte的地址值。

      內容一樣的雙引號字符串,字符串池的地址會重復使用。

      使用new的不在池當中。

      對于引用類型來說,==是{地址值}的比較。基本類型,==是值的比較。

      字符串對象名.equals( Object obj ),參數可以是任何對象,進行內容比較。

      “XXX”.equals( obj )。推薦把常量字符串寫在前面,可能會出現NullPointerException,空指針異常。

      Obj.equalsIgnoreCase( obj ),不區分大小寫的對比。

      int length():字符串長度

      String concat(String str):拼接字符串,并返回一個新的字符串。

      char ch = char chatAt (int index):獲取指定索引的單個字符,索引從0開始。

      int indexOf(String str):查找參數字符串第一次出現的索引的位置。

      String substring( int index ):截取從參數位置開始到字符串末尾,返回新字符串

      String substring( int begin , int end) :截取中間字符串,[ begin, end )

      char[ ] toCharArray():把字符串拆分為字符數組作為返回值。

      char[ ] chars = xx.toCharArray();

      byte[ ] getBytes():獲取字符串底層的字節數組

      byte[ ] bytes = xx.getBytes();

      String replace( CharSequence oldString , CharSequence newString):將所有出現的老字符串替換為新字符串。 replaceAll所有出現

      CharSequence 接口,可以接受字符串數組。

      String[ ] split( String regex) :分割字符串,按照參數規則進行切分,返回字符串數組

      String[ ] array1 = xx.split(",");

      注意:split參數是正則表達式,使用’’." 應該使用"http://.";

      直接在類里面進行保存,所有類對象共享一份。不屬于對象自己,屬于類。在棧里面直接與方法區進行連接。只和類有關,隨著類的消失而消失。生命周期最長。

      靜態變量存儲在方法區的靜態區中。 實例變量存在于對象所屬的堆內存中。

      修飾成員變量:只需要賦值一次。多個對象共享同一個對象。例如:計數器,進行每次new時進行自增,++idCount。

      修飾成員方法:靜態方法屬于類,可以使用類名來調用。推薦使用類名稱進行調用。對于本類當中的靜態方法,類名可以省略。

      類名稱.靜態變量

      類名稱.靜態方法()

      注意:

      靜態方法不能直接訪問非靜態變量。因為內存中先有靜態內容。

      靜態方法不能寫this關鍵字,誰調用的方法,誰就是當前對象。

      靜態代碼塊:執行到本類時,靜態代碼塊唯一執行一次。一次性的對靜態成員變量賦值

      靜態內容優先于非靜態。比構造方法先執行。可以有多個靜態代碼塊。

      public class 類名稱{ static{ //靜態代碼塊內容 } }

      1

      2

      3

      4

      5

      與數組相關的工具類,有大量的靜態方法。

      static String toString( 數組 ):將參數數組按照默認格式變為字符串。默認格式:[ 元素1,元素2,… ]

      static void sort( 數組 ):按照默認升序進行數組排序。字符串:按照字母升序。自定義的類需要有Comparable或者Comparator接口支持

      Math()

      java.util.Math

      static double abs(double num):獲取絕對值,有多種重載

      static double ceil(double num):向上取整

      static double floor(double num):向下取整

      static long round(double num):四舍五入

      Math.PI 圓周率(double)

      Arrays.asList()可以插入null,而List.of()不可以

      繼承

      繼承是多態的前提。主要解決的問題是共性抽取。

      父類(超類)—> 子類(派生類)

      特點:

      子類可以擁有父類的內容,子類還可以進行擴展。

      子類可以被當成父類看待。因為在new一個子類是,堆中的子類里面包含一個父類。

      public class 父類名稱{ } public class 子類名稱 extends 父類名稱{ }

      1

      2

      3

      如果創建子類對象時,成員變量重名:

      直接子類對象訪問成員變量:等號左邊用誰就優先用誰。

      間接通過成員方法訪問成員變量:優先訪問本類當中的。方法屬于誰,優先用誰。

      成員變量名重名

      局部變量:直接寫成員變量名

      子類成員變量:this.成員變量名

      父類成員變量:super.成員變量名

      方法重名

      創建的對象是誰,就優先用誰。即new 類名(),則用這個類

      重寫 Override:方法名稱一樣,參數列表一樣。覆寫,覆蓋。

      重載 Overload:方法名稱一樣,參數列表不一樣

      創建是子類對象,則使用子類方法。

      注解:@Override 寫在方法前面,用來檢測是不是有效的正確覆蓋重寫。這個注解是可選的安全檢測。

      子類方法的返回值必須小于等于父類方法的返回值范圍。

      修飾符 返回值類型 方法名(參數類型 參數名,…) { return 返回值;}

      java.lang.Object 類是所有類的公共最高父類。

      子類方法的權限必須大于等于父類的權限修飾符。

      修飾符 返回值類型 方法名(參數類型 參數名,…) { return 返回值;}

      public > protected > (default) > private

      備注: (default) 不是關鍵字,而是什么都不寫,留空。

      設計原則:對于已投入使用的類,盡量不要修改。建議定義有個新類,重復使用有共性的內容,并且添加改動的新內容。

      先出父類的構造方法,在調用子類構造方法。

      子類構造方法有一個隱含的super( ) 調用,無參數的才贈送,有參數的不贈送。

      可以通過super關鍵字來子類構造方法調用父類重載構造方法。

      使用 super( 參數值 ) 調用父類重載的構造方法。

      XX(int num)-- 重載無參數的XX()。

      注意:super的父類構造,必須是子類構造方法中的第一個(行),只能調用一次。

      用法:

      子類的成員方法中訪問父類的成員變量。

      子類的成員方法中訪問父類的成員方法。

      子類的構造方法中訪問父類的構造方法。

      this關鍵字訪問本類內容

      在本類的成員方法中,訪問本類的成員變量。

      在本類的成員方法中,訪問本類的另一個成員方法。如果覆寫是可以強調是本類的方法。

      在本類的構造方法中,訪問本類的另一個構造方法。this調用也必須是構造方法的第一個語句,一個構造方法里唯一一個。且當前構造方法調用另一個構造方法之后,不能被其他構造方法所調用訪問。

      super和this的構造調用不能同時。

      super_class在子類的方法區中指向父類方法區。

      Java是單繼承的,一個類的直接父類只能有唯一一個。

      Java可以多級繼承。

      一個父類可以擁有很多個子類。

      如果父類方法不確定如何進行方法實現。

      抽象方法:加上abstract關鍵字,去掉大括號,直接分號結束

      抽象類:抽象方法所在的類。必須是抽象類

      抽象方法和抽象類:

      不能直接創建new抽象類

      必須用一個子類來繼承抽象父類。

      子類必須覆蓋重寫父類方法中的所有抽象方法,子類去掉抽象方法的abstract關鍵字,補上大括號。否則子類也是抽象類。但后面的子類總要覆寫。

      創建子類對象進行使用。

      注意:本文符號有中文符號,請不要直接復制

      Java 面向對象編程

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:OCI鏡像制作工具之skopeo
      下一篇:測試人生 | 畢業2年未滿,0經驗拿下知名互聯網企業30W 年薪,他是怎么做到的?
      相關文章
      亚洲AV成人潮喷综合网| 亚洲乱妇老熟女爽到高潮的片| 99久久婷婷国产综合亚洲| 亚洲视频在线观看| 亚洲欧洲国产精品香蕉网| 国产偷窥女洗浴在线观看亚洲| 亚洲AV中文无码乱人伦在线视色| 朝桐光亚洲专区在线中文字幕 | 亚洲AV永久无码精品| 国产亚洲精品xxx| 亚洲AV永久无码区成人网站| 亚洲精品无码AV人在线播放| 亚洲香蕉网久久综合影视| 亚洲色无码一区二区三区| 国产亚洲AV无码AV男人的天堂 | 亚洲精品自偷自拍无码| 亚洲精品女同中文字幕| 鲁死你资源站亚洲av| 亚洲国产成人久久综合一区77| 亚洲国产精品成人网址天堂| 午夜在线亚洲男人午在线| 亚洲国产精品嫩草影院久久| 久久久久国产亚洲AV麻豆| 亚洲午夜久久久久久久久电影网| 久久精品国产亚洲麻豆| 久久精品国产亚洲av水果派| 亚洲美女色在线欧洲美女| 亚洲图片激情小说| 亚洲自国产拍揄拍| 亚洲欧好州第一的日产suv| 亚洲国产成人久久精品大牛影视| 国产产在线精品亚洲AAVV| 2048亚洲精品国产| 久久亚洲伊人中字综合精品| 99人中文字幕亚洲区| 色在线亚洲视频www| 老子影院午夜伦不卡亚洲| 久久亚洲AV无码西西人体| 亚洲成AV人片在线观看| 亚洲精品不卡视频| 亚洲免费网站观看视频|