JAVA中构造函数可以重载?C#中呢?
Java中的构造函数可以重载,C#中的构造函数也可以重载。
它们都是面向对象的语言。
面向对象语言的特点是封装性、继承性和多态性。
java构造方法重载
方法重载:
1.必须在同一个类中
2.方法名称相同
3.数量或参数类型不同参数方法(或参数顺序)
注意:
1、参数顺序是指参数类型的顺序,没有什么与参数名称有关,像show(inta,,Stringa,intc)和show(intc,Stringb,inta)是同一个方法,非方法重载,因为它们的参数类型顺序与int,String相同,int
2、方法重载与访问权限修饰符和方法返回值无关
调用:
1、调用时,填写方法参数时,会自动判断参数类型以及参数类型的顺序和数字,然后在匹配时调用重载方法。
如果没有找到重载方法,会直接编译错误
示例:
方法1.show()
方法2.show(inta,intb)
方法3.show(inta,Stringb)
方法4.show(Stringb,inta)
方法5.show(intb,inta)
1.方法1.2.3.4是一个重载的方法(1与[234]参数个数不同,2与[34]之间参数类型不同,3与[4]之间参数类型顺序不同)
2.方法1.3.4.5是重载方法(1和[534]]参数个数不同,5与[34]参数类型不同,3与[4]参数类型顺序不同)
3.方法2和5不是方法重载,因为参数类型参数顺序相同,因为参数名称无关
4.方法1.2.3.4为例,show()会调用方法1、show(1,1)会调用方法2,show(1,"1")会调用方法3
show("1",1)会调用方法4
---------------------------------------------------------------------------------------------------------------------------------------------
两个方法的名称分别是test1和test2。
如果方法名不同,这肯定不是方法重载,构造函数方法名应该与类名相同。
可能存在不同名称的构造函数
2.iftest(inti,Strings){}test(Strings,inti){
那么这两个构造函数被重载,不会出现编译错误,因为参数类型的顺序不同,第一个构造函数的参数类型的顺序是int和String,第二个构造函数的参数类型的顺序是字符串,整数