Java方法的重载以及构造函数的理解
上一篇 / 下一篇 2012-08-09 10:07:04 / 个人分类:Java
一直对重载和构造函数的概念不是很理解,看了mars的视频以后有一种豁然开朗的感觉,写下来跟大家一起分享下。
w#HF3UXy0qm#d(]051Testing软件测试网&_9\$Dd L&?db5AS方法的重载有3个条件:
eQ.d3c:ONX(t+A0b'd9T:]+`*Q_1EU2G0 1、函数位于同一个类下面;51Testing软件测试网.d(F7YQPn.\/t {N
51Testing软件测试网`Q!f:uHH0O2、方法名必须一样;51Testing软件测试网,\_7A o:~J6] N
4a5ZA`\(X/L0 3、方法的参数列表不一样。
w!gL0upu3R0&k;jS5TpCc/B0 比如有以下的例子:
9@U h|w0class Student { $SZs} Rx0 void action(){51Testing软件测试网)z'p+[.I3\ System.out.println("该函数没有参数!"); `ZZN[7v0 } d_FihL4es0 void action(int i) 1h iI kHTde1Y9RH5g5A0 { w*f2s9f,A*Z0 System.out.println("有一个整形的参数!"); L X3@^6`&s-g0 } n1ck }6TpL0 void action(double j) u6T1lN9y'm0 { ^.Q#K0?n)n#TBy;g0 System.out.println("有一个浮点型的参数!"); kFvd/Cb0 } 5r)U,p3M0i|w2j0} |
该类中定义了3个方法,但是3个方法的参数列表不一样;
6ZU|h(I2JA0a8W3l)d B0 下面在主函数中调用这个类:
nKZ2i\!T051Testing软件测试网;[KL#G,T B"@ public classTest{51Testing软件测试网/pHeH/hBX3\y 51Testing软件测试网 j5j/c1JB /**51Testing软件测试网,O%uHF5TG.Qwy;e } r:iL#B,r0 |
pg&e[?MQW0 看看运行结果:51Testing软件测试网|N8E+W4k8N"q
从控制台的输出可以看出,我在主函数中实例化一个student对象,分别调用了这个对象的3中方法,由于3个方法的参数不一样,所以可以看到输出的结果也不一样;51Testing软件测试网$bu l e.E
构造函数的使用:
H Q&R'U"Jrk#W0定义一个Sutdent类,类里面定义两个属性:51Testing软件测试网#mTTjd?E$vB
51Testing软件测试网M:sGG"TYn$Eclass Student {51Testing软件测试网6r;m)bI/lYS T x~{3x
b$Km}&V-RqC"o0 String name;51Testing软件测试网:T0b1^8a)H!x
int age;51Testing软件测试网V4R-B"r3AKK
}51Testing软件测试网+M3H
z4~
EN-x#w
d c\0h[8Rj0 此时的Student类中没有构造函数,系统会自动添加一个无参的构造函数,这个构造函数的名称必须和类的名称完全一样,大小写也必须相同,系统编译完了之后是以下的情况:
4g ~.ReVoG%u0X+D'u.O!?*S(NW,q0
6uaC1g*]!v5Il0class Student {51Testing软件测试网$S#M/VynW Student()51Testing软件测试网C4h6fIiB {51Testing软件测试网)K}*q@:de/| x } U!v D`'|b0g,w K:r0 String name; @8ik9N H ctq4O0 int age;51Testing软件测试网 Q.D8A&M2B6[3o } |
主函数中实例化两个对象:
G f},E+K6M0_`5MLP&y051Testing软件测试网sL9q|o
public class Test { VC%av5bK0 /** AH G\;qw0 * @param args51Testing软件测试网kG4UM{?!UFY!N9W * @author weasleyqi51Testing软件测试网G2HNg3?D%d1b!HC */51Testing软件测试网bz2G-V3K H public static void main(String[] args) {51Testing软件测试网0?Qva;Kb u8ep // TODO Auto-generated method stub51Testing软件测试网#K${`7F\6E8xq Student st = new Student(); /\A8wq3t({*C{&G:e0 st.name = "张三"; %n-@v u iw*~0 st.age = 10; T&o| T?)A!]0 51Testing软件测试网J!h PF,? Student st2 = new Student(); WrpW&Cw_0 st2.name = "李四"; ,Cx-x(KMWg+T8U0 st2.age = 20; Y ]!j2O_?H0 }51Testing软件测试网BbOGSO } |
8g7I#Y6[,bz/k0 从主函数可以看出,此时的Student对象的属性比较少,创建的实例也比较少,如果属性多再创建多个实例的话,这个代码的量就很大,这时候,我们可以添加一个带参数的构造函数,如下:
Gr/?:O)_ X4D0