1. 程式人生 > >Java編程基礎篇第六章

Java編程基礎篇第六章

end 調用 基本類 進棧 多態 靜態成員 好處 函數賦值 構造

構造方法

一:概念

  給對象的數據(屬性)進行初始化

二:特點

  a.方法名與類同名(字母大小寫也要一樣)

  b.沒有返回值類型

  c.沒有具體的返回值 return

三:構造方法重載

  方法名相同,與返回值類型無關(因為構造方法沒有返回值),只看參數列表

  註:如果沒有寫出構造方法,系統自動提供一個無參的構造方法,如果我們給出了構造方法,

  系統不再提供構造方法。

1 class Student{ 
2 //下面是構造方法 
3 public Student{ 
4 //無參構造方法 
5 } 
6 public Person(String name,int age){
7  //
有參構造方法 8 } 9 }

成員變量

一:賦值

  A.通過setxxx()方法

  B.通過構造方法

例子:學生類

class Student{
 private String name; private int age;
 //下面是構造方法 
public Student(String name,int age){
 //構造方法賦值
 //this.name = name;
 //this.age = age;
 } 
public void setName(String name){ 
this.name = name;
 } 
public void setAge(int age){
 
this.age = age; } }

創建對象的步驟

  Student s = new Student();

  1,Student.class加載進內存

  2,聲明一個Student類型引用s

  3,在堆內存創建對象,

  4,給對象中屬性默認初始化值

  5,屬性進行顯示初始化

  6,構造方法進棧,對對象中的屬性賦值,構造方法彈棧

  7,將對象的地址值賦值給s

static關鍵字

一:概念:

  static用於修飾類的成員,如成員變量,成員方法,代碼塊,被static

修飾的成員具備一些特殊性。

二:特殊性

  a:隨著類的加載而加載

  b:優先於對象存在

  c:被類的所有對象共享

  舉例:咱們班級的學生應該共用同一個班級編號。其實這個特點也

  是在告訴我們什麽時候使用靜態?

  如果某個成員變量是被所有對象共享的,那麽它就應該定義為靜態

  的。

  舉例:

    飲水機(用靜態修飾)

    水杯(不能用靜態修飾)

  共性用靜態,特性用非靜態

  d:可以通過類名調用

    其實它本身也可以通過對象名調用。

  推薦使用類名調用。

  靜態修飾的內容一般我們稱其為:與類相關的,類成員

三:註意事項

  a:在靜態方法中是沒有this關鍵字的

  如何理解呢?

    靜態是隨著類的加載而加載,this是隨著對象的創建而存在。

    靜態比對象先存在。

  b:靜態方法只能訪問靜態的成員變量和靜態的成員方法

  靜態方法:

    成員變量:只能訪問靜態變量

    成員方法:只能訪問靜態成員方法

  非靜態方法:

    成員變量:可以是靜態的,也可以是非靜態的

    成員方法:可是是靜態的成員方法,也可以是非靜態的成員方法。

  簡單記:

    靜態只能訪問靜態。

四:列子

class Student{ 
static String name;
//靜態變量
 static{ 
System.out.println("這是靜態代碼塊"); 
}
 public static void sayHello()
{ 
System.out.println("這是靜態方法"); 
} 
}

五:靜態變量和成員變量的區別

  A:所屬不同

    * 靜態變量屬於類,所以也稱為為類變量

    * 成員變量屬於對象,所以也稱為實例變量(對象變量)

  B:內存中位置不同

    * 靜態變量存儲於方法區的靜態區

    * 成員變量存儲於堆內存

  C:內存出現時間不同

    * 靜態變量隨著類的加載而加載,隨著類的消失而消失

    * 成員變量隨著對象的創建而存在,隨著對象的消失而消失

  D:調用不同

    * 靜態變量可以通過類名調用,也可以通過對象調用

    * 成員變量只能通過對 象名調用

main方法的格式詳細解釋

  A:格式

    * public static void main(String[] args) {}

  B:針對格式的解釋

    * public 被jvm調用,訪問權限足夠大。

    * static 被jvm調用,不用創建對象,直接類名訪問

    * void被jvm調用,不需要給jvm返回值

    * main 一個通用的名稱,雖然不是關鍵字,但是被jvm識別

    * String[] args 以前用於接收鍵盤錄入的

使用JDK提供的幫助文檔

  A:找到文檔,打開文檔

  B:點擊顯示,找到索引,出現輸入框

  C:你應該知道你找誰?舉例:Scanner

  D:看這個類的結構(需不需要導包)

    * 成員變量 字段

    * 構造方法 構造方法

    * 成員方法 方法

Math類

一:概念

  類包含用於執行基本數學運算的方法

二:獲取隨機數的方法

  public static double random():返回帶正號的 double 值,該值大於等於 0.0

  且小於 1.0。

童鞋們可以自行驗證一下。

代碼塊

  代碼塊概述:

  * 在Java中,使用{}括起來的代碼被稱為代碼塊。

  代碼塊分類:

  * 根據其位置和聲明的不同,可以分為局部代碼塊,構造代碼塊,靜態代碼

    塊,同步代碼塊(多線程講解)。

常見代碼塊:

  * a:局部代碼塊

    在方法中出現;限定變量生命周期,及早釋放,提高內存利用率

  * b:構造代碼塊 (初始化塊)

    在類中方法外出現;多個構造方法方法中相同的代碼存放到一起,每次調

    用構造都執行,並且在構造方法前執行

  * c:靜態代碼塊

    在類中方法外出現,並加上static 修飾;用於給類進行初始化,在加載的

    時候就執行,並且只執行一次。

一般用於加載驅動

class Text {
static {
System.out.println("靜態代碼塊");
}
{
System.out.println("構造代碼塊");
}
public Text() {
System.out.println("構造方法");
}
}
public class Demo { 
static {   System.out.println("Demo 靜態代碼塊"); } public static void main(String[] args) {
  System.out.println("我是 main 方法");   Text s1 = new Text();
   Text s2 = new Text(); } }

運行結果:

技術分享圖片

可以看出,執行順序 靜態代碼塊>構造代碼塊>構造函數

面向對象之繼承

  繼承(extends)概念:

    讓類與類之間產生關系,子父類關系

  繼承的好處:

    * a:提高了代碼的復用性

    * b:提高了代碼的維護性

    * c:讓類與類之間產生了關系,是多態的前提

  繼承的弊端:

    * 類的耦合性增強了。

    * 開發的原則:高內聚,低耦合。

    * 耦合:類與類的關系

    * 內聚:就是自己完成某件事情的能力

  繼承的特點:

    * a:Java只支持單繼承,不支持多繼承。(一個兒子只能有一個爹)

    * 有些語言是支持多繼承,格式:extends 類1,類2,...

    * b:Java支持多層繼承(繼承體系) * 如果想用這個體系的所有功能用

   最底層的類創建對象

    * 如果想看這個體系的共性功能,看最頂層的類

  繼承的註意事項:

    * a:子類只能繼承父類所有非私有的成員(成員方法和成員變量)

    *b:子類不能繼承父類的構造方法,但是可以通過super(馬上講)關鍵字去訪

  問父類構造方法。

    * c:不要為了部分功能而去繼承

  什麽時候使用繼承:

  * 繼承其實體現的是一種關系:"isa"。如果有兩個類A,B。

  只有他們符合 A是B的一種,或者B是A的一種,就可以考慮使用繼承

this和super的區別和應用:

  this和super的用法很相似。

  this代表本類對象的引用。

  super代表父類的內存空間的標識。

  this和super的使用區別:

    * a:調用成員變量

    *this.成員變量 調用本類的成員變量,也可以調用父類的成員變量

    *super.成員變量 調用父類的成員變量

     b:調用構造方法

    *this(...) 調用本類的構造方法

    *super(...) 調用父類的構造方法

    * c:調用成員方法

    *this.成員方法 調用本類的成員方法,也可以調用父類的方法

    *super.成員方法 調用父類的成員方法

final關鍵字

  final修飾特點

    1,final修飾的類是一個最終類,不能在派生子類。

    2,final修飾的方法是最終方法,不可以給重寫。

    3,final 修飾的變量是一個常量,只能被賦值一次。 被 final 修飾的常量名

    所有的字母都是大寫的。如果由多個單詞組成單詞間通過 _ 連接。

    4,可以通過構造代碼塊或者構造函數賦值一次。

      * 基本類型,是值不能被改變

      * 引用類型,是地址值不能被改變,對象中的屬性可以改變

Java編程基礎篇第六章