C#实例化一个类,为什么能够带参数?

刹那坤 2020-08-11 10:29:19
新手一枚,看书上的内容不太理解,想请教下各位前辈:

整个程序段里有抽象类,base关键词,还有带形参的构造函数,为什么类的实例化可以带参数?哪些情况下会出现?谢谢。
...全文
3091 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
刹那坤 2020-08-12
  • 打赏
  • 举报
回复
引用 16 楼 蜗牛慢慢趴 的回复:
[quote=引用 12 楼 刹那坤 的回复:][quote=引用 3 楼 hztltgg 的回复:]就是一个类如果比较复杂,想new实例化的时候做一些操作可以用构造函数来实现自动调用,不然写一个单独的函数,new以后在调用也是一样的
classname obj=new classname()//先这么实例化 obj.classname(pra 1,pra2)//再这样调用是吗?[/quote] 如果是构造函数,那么实例化的时候就将pra1和pra2传入,不需要再调用 如果是12楼的方式,意思你写个obj.init(pra1,pra2)方法,实例化后调用这个方法,而不是再去调一次带参数的构造函数[/quote] 好的,谢谢。
xuzuning 2020-08-12
  • 打赏
  • 举报
回复
引用 10 楼 刹那坤 的回复:
[quote=引用 7 楼 xuzuning 的回复:]在类被实例化时,一定要去调用构造函数的。
哦 也就是说 classname obj=new classname() //这里默认调用的就是无形参的构造函数,系统默认自带无形参的构造函数,可以不进行建立,如果你不是调用这个默认的构造函数,那就自行定义,根据实际的重载构造函数来选择 这么理解对的吧?[/quote]是的
蜗牛慢慢趴 2020-08-12
  • 打赏
  • 举报
回复
引用 12 楼 刹那坤 的回复:
[quote=引用 3 楼 hztltgg 的回复:]就是一个类如果比较复杂,想new实例化的时候做一些操作可以用构造函数来实现自动调用,不然写一个单独的函数,new以后在调用也是一样的
classname obj=new classname()//先这么实例化 obj.classname(pra 1,pra2)//再这样调用是吗?[/quote] 如果是构造函数,那么实例化的时候就将pra1和pra2传入,不需要再调用 如果是12楼的方式,意思你写个obj.init(pra1,pra2)方法,实例化后调用这个方法,而不是再去调一次带参数的构造函数
刹那坤 2020-08-12
  • 打赏
  • 举报
回复
引用 4 楼 小白卟白 的回复:
Employee 类名与方法名一致 且带有参数;Employee继承了Person 所以就有了这两句代码;
好的,蟹蟹
刹那坤 2020-08-12
  • 打赏
  • 举报
回复
引用 4 楼 小白卟白 的回复:
Employee 类名与方法名一致 且带有参数;Employee继承了Person 所以就有了这两句代码;
嗯嗯,了解了。谢谢。
引用 5 楼 小白卟白 的回复:
//构造函数 { Person per = new Employee("张三", "男", 23); } class Person { public string name; public string sex; public int age; public Person(string _name, string _sex, int _age) { name = _name; sex = _sex; age = _age; } } class Employee : Person { public Employee(string name, string sex, int age) : base(name, sex, age) { } }
谢谢!
xiaoxiangqing 2020-08-12
  • 打赏
  • 举报
回复 1
取决于构造函数有没有参数
刹那坤 2020-08-12
  • 打赏
  • 举报
回复
引用 3 楼 hztltgg 的回复:
就是一个类如果比较复杂,想new实例化的时候做一些操作可以用构造函数来实现自动调用,不然写一个单独的函数,new以后在调用也是一样的
classname obj=new classname()//先这么实例化 obj.classname(pra 1,pra2)//再这样调用是吗?
刹那坤 2020-08-12
  • 打赏
  • 举报
回复
引用 8 楼 正怒月神 的回复:
[quote=引用 2 楼 刹那坤 的回复:][quote=引用 1 楼 glen30 的回复:]调用的是不同的构造函数
那就是说,在类被实例化时,可以同时进行构造函数调用了。[/quote] 本来就是通过构造函数,实例化的。 只是构造函数可以重载。[/quote] 谢谢,默认有个不带形参的构造函数,那大概了解了。
刹那坤 2020-08-12
  • 打赏
  • 举报
回复
引用 7 楼 xuzuning 的回复:
在类被实例化时,一定要去调用构造函数的。
哦 也就是说 classname obj=new classname() //这里默认调用的就是无形参的构造函数,系统默认自带无形参的构造函数,可以不进行建立,如果你不是调用这个默认的构造函数,那就自行定义,根据实际的重载构造函数来选择 这么理解对的吧?
Bridge_go 2020-08-11
  • 打赏
  • 举报
回复
用子类构造函数实例化父类
正怒月神 2020-08-11
  • 打赏
  • 举报
回复
引用 2 楼 刹那坤 的回复:
[quote=引用 1 楼 glen30 的回复:]调用的是不同的构造函数
那就是说,在类被实例化时,可以同时进行构造函数调用了。[/quote] 本来就是通过构造函数,实例化的。 只是构造函数可以重载。
xuzuning 2020-08-11
  • 打赏
  • 举报
回复
在类被实例化时,一定要去调用构造函数的。
小白卟白 2020-08-11
  • 打赏
  • 举报
回复
https://www.cnblogs.com/dxx-blogs/p/5342944.html
小白卟白 2020-08-11
  • 打赏
  • 举报
回复
//构造函数 { Person per = new Employee("张三", "男", 23); } class Person { public string name; public string sex; public int age; public Person(string _name, string _sex, int _age) { name = _name; sex = _sex; age = _age; } } class Employee : Person { public Employee(string name, string sex, int age) : base(name, sex, age) { } }
小白卟白 2020-08-11
  • 打赏
  • 举报
回复
Employee 类名与方法名一致 且带有参数;Employee继承了Person 所以就有了这两句代码;
hztltgg 2020-08-11
  • 打赏
  • 举报
回复
就是一个类如果比较复杂,想new实例化的时候做一些操作可以用构造函数来实现自动调用,不然写一个单独的函数,new以后在调用也是一样的
刹那坤 2020-08-11
  • 打赏
  • 举报
回复
引用 1 楼 glen30 的回复:
调用的是不同的构造函数
那就是说,在类被实例化时,可以同时进行构造函数调用了。
glen30 2020-08-11
  • 打赏
  • 举报
回复
调用的是不同的构造函数

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧