类方法中的一类特殊方法:构造方法。
3 W- T: V0 O7 w/ p }$ s构造方法是当用类生成对象时,系统在生成对象的过程中利用的方法。
, q2 j! V# {8 n) P3 I" X+ J注意:构造方法在生成对象的时候会被调用,但并不是构造方法生成了对象。3 k% J) y3 J5 L4 h
构造方法没有返回值。格式为:public 方法名。6 q: I' v# B7 `! w" \ I
构造方法的方法名与类名相同。. O; I7 J, P' t! V/ I$ Q3 L
构造方法是在对象生成的过程中自动调用,不可能利用指令去调用。
& |3 g% T/ B8 B% H在一个对象的生成周期中构造方法只用一次,一旦这个对象生成,那么这个构造方法失效。4 E& x+ _9 X) Z2 q. d; F
用类来生成对象的语句:7 e- Y1 {) B* E( G1 e7 V" W
Student s=new Student()。9 T) o4 j; d) l1 E1 a, Z5 }
第一个Student表示这是用Student类进行定义。“Student()”表示调用一个无参数的构造方法。
0 N) N8 d3 Y, k如果()中有参数,则系统构造对象的过程中调用有参的方法。/ q$ R/ K3 e$ F
此时S称为一个对象变量。
6 M6 i; ^" D8 o: W& j Student s的存储区域存放的是地址:一个对象在硬盘上占有一个连续地址,首地址赋予s空间。4 L3 N0 g- U$ h9 O1 h
S称为对象Student的引用。2 o0 u; {5 X) [( T2 J5 C/ F3 v, O
注意:在对象变量中存放的是引用(地址);在简单变量中存放的是数值。: F; `& G: X; i$ D% r
可以构造多个构造方法,但多个构造方法的参数表一定不同,参数顺序不同即属于不同的构造方法:
4 L% @! a5 s" D- O7 r7 k. L5 G+ c8 S) apublic student(string name,int a){, Y( f. U5 h& v" d% U# r
}
" C0 N4 |" ?* N$ k4 E6 L+ Epublic student(int a,string name){
& j! A% J k+ k" h ?" G}
?( T1 u4 j z; t为两个不同的构造方法。
& U7 M8 ?) ?% D+ c' B如果我们未给系统提供一个构造方法,那么系统会自动提供一个为空的构造方法。
- H+ J- l# C! \2 [+ j7 ~2 C练习:写一个类,定义一个对象,定义两个构造方法:一个有参,一个无参。) ~3 X2 i% J' z2 Y
(编写一个程序验证对象的传递的值为地址)
1 s1 A7 L. I1 z( J( H注意下面这种形式:9 n" l. F6 H* t+ c5 g7 V) @
static void changename(student stu){stu.setName “LUCY”}
+ E2 p1 q% {, i0 Z% N注意生成新的对象与旧对象指向无关,生成新对象生命消亡与旧对象无关。 |