Java 基礎知識(類 、 屬性、方法)梳理

文章摘要
1、構造方法
2、重載
3、重寫
4、方法參數以及傳遞
5、遞歸
6、繼承
7、多態
8、訪問修飾符
9、static修飾符
10、final修飾符
11、abstract修飾符
12、interface接口


一、類

在Java中,類是對象的抽象概念。在一個類中,包括屬性、方法等。

public class 計算器 {
 //1、定義類成員變量mCurrentResult : [數據類型] [變量名]
 public String mCurrentResult;
 
 /**
  * 2、方法
  * 將結果輸出到屏幕
  * @param message
  */
 public void print(String message){//message局部變量
 mCurrentResult = message;
 System.out.println("計算結果:"+mCurrentResult);
 }
}

類的初始化以及使用:

//使用new關鍵字,得到一個計算器對象 calc。
計算器  calc = new 計算器();
//在計算器上,打印 0.
calc.print("0");//計算結果:0

類名:

  • 類名使用英文來命名,不建議使用中文。
  • 類名首字母大寫

類名最好和實際使用的場景有意義,例如:Person,比Aaa要好上太多。

二、屬性

在類中,可以定義靜態常量,也可以定義變量,這些都屬于類的屬性。變量按照作用范圍,又分為成員變量和局部變量。格式:【數據類型 名稱 = 值】
如上文的代碼案例:mCurrentResult 成員變量,message局部變量。

三、方法

3.1、方法的四要素:方法返回值類型、方法名稱、形式參數、方法體。

//【修飾符】 【返回值類型】 【方法名稱】(形式參數列表){
// //方法實現主體
// //return 返回值。
//    }
 public int sum(int number1,int number2){
 return number1+number2;
 }

3.2、構造方法:
構造方法:
1、方法名必須與類名完全匹配。
2、不含有返回類型
3、不能被描述符修飾
ps:當定義一個類時,會默認含有一個隱式、無參構造方法。

public 計算器(){
 System.out.println("歡迎使用計算器");
}

public 計算器(String msg){
 this.mCurrentResult = msg;
 System.out.println("初始屏幕顯示:"+msg);
}

3.3、方法重載
重載:在一個類中,含有相同的方法名稱,但是:參數列表(參數的類型、個數、順序)不同的多個方法。例如:3.2中的兩個構造方法。
3.4、方法重寫
重寫:在一個類中,子類對父類中的方法,進行重新實現。擁有相同的方法名稱、返回值、形參列表。

  • 重寫方法不能比被重寫的方法又嚴格修飾權限。
  • static修飾的方法,無法被重寫。

3.5、方法參數以及傳遞
Java語言中,方法中參數的賦值,只采用傳值的方式,按照類型又分為:基本數據類型、引用數據類型。
基本數據傳遞:

int x = 5;
System.out.println("調用前:"+x);
change(x);
System.out.println("調用后:"+x);
public static void change(int x){
 x = 300;
 System.out.println("執行中:"+x);
}

輸出:

調用前:5
執行中:300
調用后:5

引用數據傳遞:

calc.mCurrentResult = "調用方法前";
System.out.println("方法調用前:"+calc.mCurrentResult);
change(calc);
System.out.println("方法調用后:"+calc.mCurrentResult);
public static void change(計算器 calc){
 calc.mCurrentResult = "調用change方法";
 System.out.println("方法執行中:currentResult:"+calc.mCurrentResult);
}

輸出:

方法調用前:調用方法前
方法執行中:currentResult:調用change方法
方法調用后:調用change方法

3.6、遞歸調用

//計算從1到10的加法和
int sumCount = sum(10);
System.out.println("sumCount is:"+sumCount);

private static int sum(int n){
 if(n==1){
 return 1;
 }else{
 return n+**sum(n-1)**;
 }
}

四、this關鍵字

this:當前對象的引用。

public 計算器(String mCurrentResult){
 this();
 this.mCurrentResult = mCurrentResult;
 System.out.println("初始屏幕顯示:"+mCurrentResult);
}
  • 當方法的參數名稱與類的成員變量相同時,使用this可以用來明確變量的作用范圍。例如:上面的代碼,方法的mCurrentResult與類的成員變量mCurrentResult,相同。
  • 調用本類的其他構造方法,如上面的例子中的this();

** 五、繼承 **

1、類可以繼承父類,成為一個子類。2、繼承是“is-a”關系。3、子類可以通過繼承,來獲得父類的特性。4、Java只支持單繼承:一個類只能有一個父類,但一個父類可以派生多個子類。

public class Person {
 public String name;
 public Person(String name){
 this.name = name;
 }
 
 public String toDesc() {
 return "Person [name=" + name + "]"
 +",兩條胳膊,兩條腿。";
 }
}

Super:同“this”關鍵字一樣,Super代表父類的引用

public class 稻草人 extends Person{

 public 稻草人(String name) {
 super(name);
 }

 @Override
 public String toDesc() {
 return super.toDesc();
 }
}

六、多態

1、子類可以自動向上轉型為父類型。
2、父類型要轉換為子類型,必須強制類型轉換。但強轉有風險。比如:類型轉換操作。
java.lang.ClassCastException
3、可以使用instance of來甄別對象類型。

//1、初始化基本的人對象
Person person = new Person("某某某");
System.out.println(person.toDesc());//Person [name=某某某],兩條胳膊,兩條腿。

//2、向上轉型
Person 稻草Person = new 稻草人("衛兵");
System.out.println(稻草Person.toDesc());//名字叫做衛兵的稻草人,兩條胳膊,一條腿。

//3、可以通過instance of來甄別對象的類型
boolean isPersion = 稻草Person instanceof Person;
System.out.println(isPersion?"稻草Person 是 Person。":"稻草Person不是Person類型。");//稻草Person 是 Person。

//4、向下轉型,需要強制類型轉換,將類型為"Person"的稻草Person,強制轉換為 稻草人。
稻草人 daocao =  (稻草人) 稻草Person;
System.out.println(daocao.toDesc());//名字叫做衛兵的稻草人,兩條胳膊,一條腿。

七、訪問修飾符

private:私有的。只有在類中才能訪問,只能修飾屬性和方法。
protected:受保護的。該類以及其成員均可以訪問,同一個包中的類也可以訪問。只能修飾屬性和方法,不能修飾類。
public:公開的。
Default:不使用修飾符。只有同一包中的類可以訪問。

八、static

使用static修飾的變量叫做靜態變量、修飾的方法叫做靜態方法,修飾的代碼塊叫做靜態代碼塊。
static屬于類共有,不屬于某個對象,優先加載。

public class 男人 extends Person{
 static{
 System.out.println("靜態代碼塊!");
 }
 public 男人(String name) {
 super(name);
 System.out.println("構造方法!");
 }

 public static void main(String args[]){
 男人 man = new 男人("張三");
 }
}

輸出:

靜態代碼塊!
構造方法!

靜態代碼塊中的方法,優于對象的構造方法而先執行。

九、final修飾符

final:終極
1、final修飾的類不能被子類繼承,所有方法都為隱式final方法。
2、final修飾的方法,不能被子類覆蓋
3、final修飾的變量,只能初始化一次。

十、abstract

abstract修飾的類,不能被實例化,即:不能通過new實例化

十一、接口Interface

抽象類型,編程超類型。
接口中定義的變量,默認為:public static final ,變量值不可修改。

案例代碼下載:http://download.csdn.net/detail/hailushijie/9661793

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容