A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小笨 中级黑马   /  2014-8-3 11:30  /  1324 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小笨 于 2014-8-4 08:17 编辑

怎样实现构造函数的重载?

评分

参与人数 1技术分 +1 收起 理由
陈君 + 1

查看全部评分

14 个回复

倒序浏览
参数不同,参数顺序不同也可以~

评分

参与人数 1技术分 +1 收起 理由
陈君 + 1

查看全部评分

回复 使用道具 举报
构造函数的参数类型不同,顺序不同,个数不同,等各种构造函数,构造自己想要的构造函数吧。

评分

参与人数 1技术分 +1 收起 理由
陈君 + 1

查看全部评分

回复 使用道具 举报
构造函数         12.1语法:访问修饰符一般情况下是public,没有返回值(连void都不用写),方法名与类名一致         12.2构造函数在创建这个类的对象的时候被自动调用,通过new关键字调用,在类名后的括号里面为构造函数传递参数         12.3构造函数可以带参数以及重载         12.4构造函数不能被程序员手动调用,但是在构造函数中可以调用普通的方法         12.5构造函数之间可以通过this关键字调用         12.6this关键字1代表当前对象,2调用本类的其他的构造函数         12.7 隐式构造函数

评分

参与人数 1技术分 +1 收起 理由
陈君 + 1

查看全部评分

回复 使用道具 举报
构造函数重载
例如Person类。private string name;
private int age;
private char gender;

// 以下两个为两个参数的构造函数。
public Person(string name,int age)
{
    this.name=name;
    this.age=age;
}

public Person(int age,string name)
{
    this.name=name;
    this.age=age;

}

下面两个为三个参数的构造函数。
public Person(string name,int age,char gender)
{
     this.name=name;
    this.age=age;
    this.gender=gender;
}
public Person(string name,char gender,int age)
{
     this.name=name;
    this.age=age;
    this.gender=gender;
}

上面四个函数就构成了重载。
函数名相同,参数列表不同的函数可构成重载
这里的参数列表不同可以有很多情况。
如果几个参数类型相同,那么即使再交换,也不会构成重载。
就像上面的两个参数的情况,两个参数类型不同,一个string一个int,交换一下位置就可以构成重载。
如果两个都是string类型的话,那就不能构成重载。
有一个判断的方法:
去掉访问修饰符,去掉返回值类型,去掉参数列表里的参数名称(不是类型)
看剩下的是不是一样,一样的话就不能构成重载。
比如下面两个
public static double GetNum(int d1,int d2)
{
   return d1+d2;
}
public static int GetNum(int i1,int i2)
{
    return i1+i2;
}
去掉上面所说的几个就剩下下面这样
GetNum(int ,int )
GetNum(int,int)
完全一样,所以不能构成重载。

评分

参与人数 1技术分 +1 收起 理由
陈君 + 1

查看全部评分

回复 使用道具 举报
通过不同类型、不同个数、不同的顺序的参数,来实现构造函数的重载。

评分

参与人数 1技术分 +1 收起 理由
陈君 + 1

查看全部评分

回复 使用道具 举报
构造函数的重载跟普通方法重载一样,只要参数不同就OK
回复 使用道具 举报
和方法重载一样,设置函数名和类同名,但是参数不同,可以是个数、位置、类型这些不同,编译器会根据传入的参数自从匹配,这就是重载
回复 使用道具 举报
函数名相同,参数列表不同
回复 使用道具 举报
总结的很纤细,很有用啊
回复 使用道具 举报
MeryStyle 来自手机 中级黑马 2014-8-31 21:29:07
11#
简而言之,只要方法参数的个数,类型,顺序(包括参数个数=0时),这时定义的方法都是互为重载的
回复 使用道具 举报
rel4x 中级黑马 2014-9-12 10:13:40
12#
不错 有用
回复 使用道具 举报
方法名相同,参数个数不同.
回复 使用道具 举报
构找函数的参数列表不同,与返回值类型无关!如果有两个一样的构找函数,他们的返回值类型不同,他们不能共存
回复 使用道具 举报
路过 学习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马