1. 程式人生 > >Java面向物件和方法

Java面向物件和方法

Java 方法

那麼什麼是方法呢?

Java方法是語句的集合,它們在一起執行一個功能。

  • 方法是解決一類問題的步驟的有序組合
  • 方法包含於類或物件中
  • 方法在程式中被建立,在其他地方被引用

方法的優點

  • 1. 使程式變得更簡短而清晰。
  • 2. 有利於程式維護。
  • 3. 可以提高程式開發的效率。
  • 4. 提高了程式碼的重用性。

方法的命名規則

  • 1. 必須以字母、'_'或'$'開頭。
  • 2. 可以包括數字,但不能以它開頭。

方法的定義

一般情況下,定義一個方法包含以下語法:

修飾符 返回值型別 方法名 ( 引數型別 引數名 ) { ... 方法體 ... return 返回值; }

方法包含一個方法頭和一個方法體。下面是一個方法的所有部分:

  • 修飾符:修飾符,這是可選的,告訴編譯器如何呼叫該方法。定義了該方法的訪問型別。
  • 返回值型別 :方法可能會返回值。returnValueType 是方法返回值的資料型別。有些方法執行所需的操作,但沒有返回值。在這種情況下,returnValueType 是關鍵字void
  • 方法名:
    是方法的實際名稱。方法名和引數表共同構成方法簽名。
  • 引數型別:引數像是一個佔位符。當方法被呼叫時,傳遞值給引數。這個值被稱為實參或變數。引數列表是指方法的引數型別、順序和引數的個數。引數是可選的,方法可以不包含任何引數。
  • 方法體:方法體包含具體的語句,定義該方法的功能。

如:

public static int age ( int birthday ) { ... }

引數可以有多個:

static float interest ( float principal , int year ) { ... }

注意: 在一些其它語言中方法指過程和函式。一個返回非void型別返回值的方法稱為函式;一個返回void型別返回值的方法叫做過程。

例項

public class Test1 {
//public static 修飾詞      void無返回值(返回值型別)   main方法名      String[] args引數列表
public static void main(String[] args){//程式的入口
int a=45;
int b=67;
int c=83;
// int sum=a+b+c;
// System.out.println("sum="+sum);
//把能實現特定邏輯功能的稱之為方法
int sum=add(a,b,c);//通過add(a,b,c)方法算出a+b+c的和
System.out.println("sum="+sum);
}
//add(int a,int b,int)方法,方法寫在類裡面
//public static修飾詞  int返回值型別為整數     add方法名   int a,int b,int c 引數列表
public static int add(int a,int b,int c){
int sum=a+b+c;//計算a+b+c
//return的作用 1.返回資料  2.結束方法
return sum;//返回計算的a+b+c的和
}
}

方法呼叫和引數傳遞

示例

下面的例子演示瞭如何定義一個方法,以及如何呼叫它:

TestMax.java 檔案程式碼:

public class Test2 {
public static void main(String[] args){//String[]引數型別  args引數名稱
go();

int age=5;
go(age);//有參處理起來更靈活
}
//方法(引數,返回值)
public static void go(){//無參,無返回值的go方法
System.out.println("走路");
}
public static void go(int age){
if(age>=3){
System.out.println("走路");
}else{
System.out.println("爬");
}
}
}

方法的過載

例項

下面的程式列印所有的命令列引數:

Test3.java 檔案程式碼:

public class Test3 {
public static void main(String[] args){
//方法的過載(overload):方法名一樣引數列表不一樣
//方法(引數列表,方法名,返回值)
say();
String str="張三";
say(str);
String gender="男";
say(str,gender);



}
//是不是同一個方法要看方法名和引數列表
public static void say(){
System.out.println("說話");//方法裡面的內容叫方法體
}
public static void say(String name){//String name=str
System.out.println(name+"在說話");
}
public static void say(String name,String sex){//String name=str,String sex=gender
System.out.println(sex+name+"在說話");
}
}

Java 物件和類

Java作為一種面嚮物件語言。支援以下基本概念

本節我們重點研究物件和類的概念。

  • 物件:物件是類的一個例項(物件不是找個女朋友),有狀態和行為。例如,一條狗是一個物件,它的狀態有:顏色、名字、品種;行為有:搖尾巴、叫、吃等。
  • :類是一個模板,它描述一類物件的行為和狀態。



Java中的物件

現在讓我們深入瞭解什麼是物件。看看周圍真實的世界,會發現身邊有很多物件,車,狗,人等等。所有這些物件都有自己的狀態和行為。

拿一條狗來舉例,它的狀態有:名字、品種、顏色,行為有:叫、搖尾巴和跑。

對比現實物件和軟體物件,它們之間十分相似。

軟體物件也有狀態和行為。軟體物件的狀態就是屬性,行為通過方法體現。

在軟體開發中,方法操作物件內部狀態的改變,物件的相互呼叫也是通過方法來完成。

Java中的類

類可以看成是建立Java物件的模板。

通過下面一個簡單的類來理解下Java中類的定義:

public class Dog { String breed ; int age ; String color ; void barking ( ) { } void hungry ( ) { } void sleeping ( ) { } }

一個類可以包含以下型別變數:

  • 區域性變數:在方法、構造方法或者語句塊中定義的變數被稱為區域性變數。變數宣告和初始化都是在方法中,方法結束後,變數就會自動銷燬。
  • 成員變數:成員變數是定義在類中,方法體之外的變數。這種變數在建立物件的時候例項化。成員變數可以被類中方法、構造方法和特定類的語句塊訪問。
  • 類變數:類變數也宣告在類中,方法體之外,但必須宣告為static型別。

一個類可以擁有多個方法,在上面的例子中:barking()、hungry()和sleeping()都是Dog類的方法。



建立物件

物件是根據類建立的。在Java中,使用關鍵字new來建立一個新的物件。建立物件需要以下三步:

  • 宣告:宣告一個物件,包括物件名稱和物件型別。
  • 例項化:使用關鍵字new來建立一個物件。
  • 初始化:使用new建立物件時,會呼叫構造方法初始化物件。

下面是一個建立物件的例子:

public class Test5 {
public static void main(String[] args) {
//Dog引用型別(變數型別)  dog引用型別名稱(變數名稱) =賦值符號    new Dog()建立一個物件
Dog dog=new Dog();//使用new關鍵字,建立一個物件(東西)
//通過物件來呼叫方法
dog.eat();
dog.swim();
dog.lookDoor();
}

}
//狗類   定義一個類要定義類的特徵(屬性),定義類的行為(方法)
//類 類是一個模板,它描述了一類物件的行為(方法)和狀態(屬性)
//物件 是類的一個例項,有狀態(屬性)和行為(方法) Object 物件(東西)
class Dog{
//特徵
int age;//狗的年齡
String color;//狗的顏色
String kind;//種類
String name;//名字
char gender;//性別
//行為
public void eat(){
System.out.println("可以吃飯");
}
public void swim(){
System.out.println("可以游泳");
}
public void lookDoor(){
System.out.println("可以看門");
}
}

訪問例項變數和方法

通過已建立的物件來訪問成員變數和成員方法,如下所示:

public class Test7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student s=new Student();
//呼叫方法
s.study();
s.love();
s.run();

//給物件的成員變數賦值
//給學生設定屬性
s.name="張三";
s.age=20;
s.gender="男";
s.color="黃種人";
s.print();
}

}
class Student{
//(成員變數)屬性   寫在類裡面
String name;
int age;
String gender;
String color;
//方法(行為)
public void study(){
System.out.println("學習");
}
public void love(){
System.out.println("談戀愛");
}
public void run(){
System.out.println("跑步");
}
//列印類的屬性
public void print(){
//name+age+gender+color
//System.out.println("name="+name+","+"age="+age+","+"gender="+gender+","+"color="+color);
System.out.println("name="+name);
System.out.println("age="+age);
System.out.println("gender="+gender);
System.out.println("color="+color);
}

}