m0_64611175 2022-05-31 16:56 采纳率: 75%
浏览 29
已结题

关于c#的一个符号“:”的询问

请问
classB:private A

public:
B(int p1):A(p1)这一排“:”的意思,作用是什么

  • 写回答

2条回答 默认 最新

  • 於黾 2022-05-31 17:24
    关注

    B(int p1):A(p1)
    你可以理解为
    B(int p1)
    {
    base.A(p1)
    }
    但是因为A是构造函数,不可以直接这样调用
    其实作用就是把B构造函数里传入的值传递给A的构造函数
    如果不传,那么父类会默认走无参的构造函数,而不会走对应的有参构造函数
    -=-=-=-
    举个例子说明这是干啥用的
    比如你有一个父类Person
    下面有三个子类,教师,学生,工人
    每个人都有名字,那么名字当然应该定义在父类中,而不是在每个子类中都定义一遍
    那么为了不要忘记给名字赋值,应该在new的时候就传入名字而不是new之后在外面传入,也就是应该有一个带参数的构造函数用来传递名字
    那么好了,既然名字存在父类里,那么把构造函数里的名字存到父类属性的这个操作也应该是父类的构造函数来完成,而不是每个子类的构造函数都执行一遍
    可是如果你的子类在实例化的时候不把参数继续向上传递,那么父类其实走的是无参的构造函数,也就是传入的名字被丢弃了
    所以你大概了解了这个是干什么用的了吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月9日
  • 已采纳回答 6月1日
  • 创建了问题 5月31日

悬赏问题

  • ¥15 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了