構造方法和方法重載小結


構造方法和方法重載
 
 作用:創建類的時候同時初始化數據,在創建new的時候.
 聲明構造方法:
 public 類名;
 比如 public BOOK(){};

對象變量進行初始化的 創建new的時候自動調用. 
自己寫的有參數的構造函數 可以把值傳給變量

構造方法簡單上說是為了可以根據類屬性需要更方便的創建對象
舉個例子

比如咖啡這個類
咖啡的類型、成分就可以看成一種屬性,咖啡的種類可以是拿鐵,摩卡,咖啡材料可以有淡奶,糖,巧克力……
根據需要想放材料什么就放什么.把材料作為參數傳進去,就可以泡出咖啡(初始化咖啡這個對象)
也就是說只用傳入參數,就可以初始化出一個對象

public coffce{
int sugar; //糖
int milk; //
int chocolate; //巧克力的數量
} public coffce(int sugar,int milk){ //只要糖和牛奶的咖啡. } public coffce(String milk){ ////只要牛奶的咖啡. } coffce p1=new coffce(1,1);//初始化出一杯1分量糖1分量牛奶的咖啡. coffce p1=new coffce(1);//初始化出一杯1分量牛奶的咖啡.

 
方法重載:
 與類的方法名一致,但是參數不一致,通過傳入不同的參數實現不同的效果.
 參數不一致可以是參數數據類型、參數個數不一致,
 
 比如是,咖啡泡好了,要堂食還是打包帶走?表示接下來的對這杯咖啡的操作.
 比如整數1表示帶走,不傳入參數表示堂食;

 public void drink()
 {
    System.out.println("堂食"); } public void foo(int n) { System.out.println("打包"); //方法重載  } 

 

 


構造方法與方法的區別
1.功能和作用上:
構造方法就是實例化一個對象。
方法是這個實例化出來的對象進行操作.


2.修飾符上:
構造方法可以有任何訪問的修飾: public, protected, private或者沒有修飾
不同於方法的是,構造方法不能有以下非訪問性質的修飾: abstract, final, native, static, 或者 synchronized。

3.返回類型上:
方法能返回任何類型的值或者無返回值(void)
構造方法是沒有返回值的,不需要void。 

4.命名上
構造器使用和類相同的名字,而方法則不同。
一般方法是用動詞來命名,表示他是一個行為;
構造器就一般會用名詞來命名,說明是為了創建一類,一個個體。


關於方法的繼承性
首先,類和類之間才能叫繼承,方法只有覆寫或者重載.
如果子類定義了構造方法,不論是無參數還是帶參數,類在初始化的時候會先調用父類的構造方法,如果子類沒有定義構造方法,就會調用父類的無參數的構造方法,
子類可以使用super()顯示調用父類帶參數的構造函數,注意,super()語句必須是子類構造方法中第一條有效代碼.


注意:構造方法調用類中的其他的構造方法,則可以用this(參數),切該語句放在構造方法的第一條.

public class Student {

    private String name; private int age; private int classname; public Student() { } public Student(String name,int age,int classname) { this.age=age;//重復的代碼直接調用setage, this.name=name; this.classname=classname; } ///父類 ////創建一個primarystu類繼承Student類; class primarystu extends Student{ public primarystu(){ super(name,age,classname); //調用父類的構造方法  } }

 


  
說白了就是方法的繼承原則就是,先調用父親的.(沒有就默認調用,有了就按有的調用,反正只要有一個就可以了.)

 

構造方法和方法重載示例:

 

class student{
    int age; String name; int weight; public student(){ System.out.println("沒有參數構造函數"); } public student(String name,int age){ this.age=age; //當前運行的實例對象. this.name=name; System.out.println("參數x1構造函數"); } public student(String name,int age,int weight){ this.age=age; this.weight=weight; this.name=name; System.out.println("參數x2構造函數"); } public void study(){ System.out.println("沒有參數構造方法"); } public void study(int time){ System.out.println("參數time構造方法"); } public void study(int time,String object){ System.out.println("參數time構造方法"); } public student(String name,int weight) { } public class forStudentarr { public static void main(String[] args){ student stu1=new student(); //這個student,限定了這個數組,只能放student這個類的東西    //跟int i1=new i()一樣,只能放一個類型的數據.  student stu2=new student("Mings",17); student stu3=new student("SHIR",19,36); student []numarry=new student[3]; numarry[0]=stu1; numarry[1]=stu2; numarry[2]=stu3; for(student i:numarry) { System.out.println(i.name); //輸出數組的信息 System.out.println(i.age); //輸出數組的信息  } } }

 

 

__________________________________________________________

運行結果:
沒有參數構造函數
參數x1構造函數
參數x2構造函數
null
0
Mings
17
SHIR
19

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM