黑马程序员技术交流社区

标题: 构造函数与重载的区别? [打印本页]

作者: 黒■色    时间: 2014-4-1 12:04
标题: 构造函数与重载的区别?
本帖最后由 黒■色 于 2014-4-1 14:45 编辑

namespace 构造函数
{
    class Program
    {
        static void Main(string[] args)
        {
            Person p1 = new Person();
            Person p2 = new Person("tom");
            Person p3 = new Person("jerry",18);
            Console.WriteLine("年龄是{0},名字叫{1}",p1.Age,p1.Name);
            Console.WriteLine("年龄是{0},名字叫{1}", p2.Age, p2.Name);
            Console.WriteLine("年龄是{0},名字叫{1}", p3.Age, p3.Name);
            Console.ReadKey();
        }
    }
    class Person
    {
        public string Name { get;set; }
        public int Age { get; set; }
        public Person()
        {
            Name = "未命名";
            Age = 0;
        }
        public Person(string name)
        {
            this.Name = name;
        }
        public Person(string name, int age)
        {
            this.Name = name;
            this.Age = age;
        }
    }
}


namespace 重载
{
    class Program
    {
        static void Main(string[] args)
        {
            
            Console.WriteLine(Add(9, 9));
            Console.WriteLine(Add(0.1, 0.3));
            Console.WriteLine(Add(111111111111111, 777777777777777));
            Console.ReadLine();
        }
        static int Add(int a,int b)
        {
                return a + b;
        }
        static double Add(double a, double b)
        {
            return a + b;
        }  
        static long Add(long a, long b)
        {
            return a + b;
        }
    }
}

重载和构造函数同样都是根据参数来选择方法,那他们有什么区别呢?


作者: mdb    时间: 2014-4-1 12:39
构造函数是一种特殊的方法,主要是为了给初始化对象赋初值
重载函数就是函数名相同,多个参数个数或类型有差异的函数
作者: 黒■色    时间: 2014-4-1 13:12
mdb 发表于 2014-4-1 12:39
构造函数是一种特殊的方法,主要是为了给初始化对象赋初值
重载函数就是函数名相同,多个参数个数或类型有 ...

重载函数我理解了,但是对于构造函数 我还是有点迷糊
构造函数式为了给初始化对象赋值,那我为什么不能再初始化对象的时候直接赋值呢?何必还要建造一个构造函数来给初始化对象赋值啊,觉得有点多此一举。  构造函数的好处是什么。。
作者: 邓江红    时间: 2014-4-1 13:27
构造函数是一个特殊的方法,它通常在类的成员最前面,主要用于在创建实例时对对象进行初始化。
重载是参数列表不一致的几个同名方法。
作者: 黒■色    时间: 2014-4-1 13:38
邓江红 发表于 2014-4-1 13:27
构造函数是一个特殊的方法,它通常在类的成员最前面,主要用于在创建实例时对对象进行初始化。
重载是参数 ...

重载就是调用函数,然后进行运算。
构造函数是给初始化对象直接赋值。
我明白了,一个是进行运算,一个是给对象赋值。对吧?
作者: mdb    时间: 2014-4-1 13:49
黒■色 发表于 2014-4-1 13:12
重载函数我理解了,但是对于构造函数 我还是有点迷糊
构造函数式为了给初始化对象赋值,那我为什么不能再 ...

构造函数的参数不是正好可以方便自己直接赋值吗,如果没有自己还要写代码逐个给字段赋值,假如类里的字段是private,那还得重新写个方法给他们赋值吧...
作者: 黒■色    时间: 2014-4-1 13:57
mdb 发表于 2014-4-1 13:49
构造函数的参数不是正好可以方便自己直接赋值吗,如果没有自己还要写代码逐个给字段赋值,假如类里的字段 ...

我大概懂了 是不是这么回事
我给的这段代码,初始化对象少,所以我觉得用构造函数多此一举
可是如果遇到需要创建很多很多个对象的时候,写构造函数就很方便,不必每一个对象都要写代码给它赋值!
对吗?
作者: mdb    时间: 2014-4-1 14:00
黒■色 发表于 2014-4-1 13:57
我大概懂了 是不是这么回事
我给的这段代码,初始化对象少,所以我觉得用构造函数多此一举
可是如果遇到 ...

这是其中一个原因吧,还有其他的原因...
作者: 黒■色    时间: 2014-4-1 14:06
mdb 发表于 2014-4-1 14:00
这是其中一个原因吧,还有其他的原因...

3Q了,大致已经了解了。
自己以后再实践中再继续领悟构造的精华!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2