news 2026/7/16 22:32:13

C#类的继承,类和结构体的区别,常量和只读变量

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C#类的继承,类和结构体的区别,常量和只读变量

无参数构造或者有参数的构造使用场景


//t1.AddDays(1); //非静态方法
//ArrayList a1 = new ArrayList(1);
//List<int> i1 = new List<int>(new int[] { });
//Dictionary<int,int> d1 = new Dictionary<int,int>();
// Array.Clear(); // 静态方法的体现

面向对象编程语言四大特征:


//封装:把一些属性和方法封装在一个类里面,这个时候对类的封装,方法的封装把一些相关代码写在一个代码块里面,通过方法名进行调用
//继承:当我们一些想添加一些属性,但是这些属性已经在其他类已经存在,没必要类重新定义属性,可以让这个类继承于其他类,会把其他类型属性和方法继承过来
//多态:同一个功能不同体现的方式
//抽象: 把属性和方法生成一个模版,没有具体实现

继承:分为父类和子类俩个概念


//父类:叫基类,把父类属性和方法继承给子类
//子类:叫派生类,继承父类里面属性和方法

公共属性能被子类继承


// 私有不能被继承
// protected internal 可以在外部进行访问,可以被子类继承
// protected 受保护的能被子类继承的 ,不能在外部被对象.属性访问

实例
internal class Program { static void Main(string[] args) { DateTime t1 = new DateTime(2010,11,10); People p1 = new People(); //父类对象 p1.Name = "皮特"; p1.Age = 30; Console.WriteLine(p1.Name + p1.Age+"父类对象"); Man jiaozi = new Man();//子类对象 jiaozi.Name = "饺子"; jiaozi.Age = 5; jiaozi.Hair = "饺子形状"; jiaozi.Test(); jiaozi.Eat(); Console.WriteLine(jiaozi.Name + jiaozi.Age+"子类对象"); //创建一个 SmallMan 对象 SmallMan s = new SmallMan(); s.Name = "布莱恩"; s.Age = 3; s.Hair = "白头"; s.M = "路易斯"; s.Cray(); Console.ReadKey(); } } //人类 class People { public string Name { get; set; }//姓名 public int Age { get; set; } //年龄 公共属性能被子类继承 private string Sex { get; set; } //私有不能被继承 protected string N { get; set; } = "魅魔"; //受保护的能被子类继承的 ,不能在外部被对象.属性访问 protected internal string M { get; set; } = "梅根"; //可以在外部进行访问,可以被子类继承 public void Test() //方法也能被子类继承 { Console.WriteLine("父类的test方法"); } } //男人类继承People, //People 父类 ;Man子类 class Man:People { public string Hair { get; set; } public void Eat() { Console.WriteLine(this.Name+"带"+this.Hair+"型,吃着炸鸡"); } } // SmallMan继承于Man Man在继承于People //SmallMan 包含了Man 和 People 公共属性和方法 // 类不允许使用多继承,也就是不允许让a同时继承于b类 c类,但是能够让a继承于b,b类继承c类 class SmallMan :Man { public void Cray() { Console.WriteLine(this.Name+ this.Age+ this.M+this.N+this.Hair); } }

//类和结构体的区别


//1 结构体是值类型,类是引用类型
//2 结构体不能定义无参数的构造函数,如果定义有参数构造函数,在函数里面必须对所有属性进行赋值
//3 结构体在定义属性或者字段时候不能赋初始值
//4 结构体不能继承其他结构体或者类,也不能被继承。

实例
internal class Program { static void Main(string[] args) { //使用结构体 Book b1 = new Book("三国演义",100); b1.Test(); Console.WriteLine(b1.Name); Book b2 = b1;//把b1赋值给b2 b1.Name = "西游记"; Console.WriteLine(b2.Name);//三国演义 Console.WriteLine(b1.Name);//西游记 Console.ReadKey(); } } struct Book { public string Name { get; set; } public int Price { get; set; } private int a1; //public Book() //{ // Name = "ss"; // Price = 10; //} //在结构体里面添加构造函数,只能定义带参数的构造函数,必须给全部属性或者字段在构造函数里面赋值 public Book(string a,int b) { Name = a; Price =b; a1 = 20; } public void Test() { Console.WriteLine("struct里面的方法"); } }

常量和只读变量

//1只读的字段:只能获取字段值,如果想修改的话,只能在构造函数里面进行修改,在其他地方不能修改。
//2 非静态只读的字段 只能三角洲()构造函数进行修改

internal class Program { static void Main(string[] args) { Console.ReadKey(); } } class 三角洲 { public readonly double 资产 = 10000; //3 静态只读字段 只能在静态构造函数里面修改static 三角洲() { } public static readonly string 昵称 = "伊娃诺夫斯基"; //4 const:常量 不能被修改 public const int c = 10; //static 三角洲() //构造函数 new的时候调用 //{ // // 昵称 = "ss"; //} public 三角洲() //构造函数 new的时候调用 { 资产 = 10000000; //昵称 = "ss"; //报错 静态只读字段不能在非静态构造函数赋值 } public void 跑刀() // 非静态 { //资产 = 10000000; //报错 只读的不能在其他函数赋值 //昵称 = "ss"; 报错 只读的不能在其他函数赋值 } public static void 掠夺() // 静态 { // 资产 = 1000000; // 报错 只读的不能在其他函数赋值 // Console.WriteLine(资产);//报错 静态只能访问静态 // 昵称 = "ss"; 报错 只读的不能在其他函数赋值 } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 9:13:57

永磁同步电机MotorCAD仿真详细流程揭秘

某永磁同步电机motorcad仿真流程,很详细 录制video文档最近在研究永磁同步电机的相关内容&#xff0c;发现MotorCAD这个软件在永磁同步电机仿真方面真的非常强大。今天就来给大家分享一下永磁同步电机MotorCAD的详细仿真流程&#xff0c;同时我还录制了配套的video&#xff0c;…

作者头像 李华
网站建设 2026/7/14 14:14:05

跳出“要么稳要么冲”陷阱:广告预算的确定性与增长性双驱法则

在亚马逊运营中&#xff0c;广告预算分配是一场精密的资源调度艺术&#xff0c;如何在“确保盈利”的确定性与“追求增长”的探索性之间找到平衡&#xff0c;是卖家必须掌握的核心能力。一、锚定底层逻辑&#xff1a;不同生命周期的预算哲学广告预算的设定&#xff0c;必须始于…

作者头像 李华
网站建设 2026/7/16 14:19:23

上海交大造出手机AI助手ColorAgent:不只是工具,更像贴心伙伴

这项突破性研究由上海交通大学与OPPO研究院联合完成&#xff0c;研究成果发表于2025年10月22日的arXiv预印本平台&#xff0c;论文编号为arXiv:2510.19386v1。研究团队由来自上海交通大学的李宁、吴正、张伟明等多位学者&#xff0c;以及OPPO研究院的林旗强、莫晓芸、赵音等专家…

作者头像 李华
网站建设 2026/7/16 18:00:46

机器视觉介绍

机器视觉的定义机器视觉&#xff08;Machine Vision&#xff09;是指通过计算机和图像处理技术模拟人类视觉功能&#xff0c;实现对物体识别、测量、定位和分析的自动化系统。广泛应用于工业检测、自动驾驶、医疗影像等领域。机器视觉的核心技术图像采集 通过摄像头、工业相机或…

作者头像 李华
网站建设 2026/7/17 2:11:41

基于鲹鱼优化算法(GTO)优化Canopy聚类附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码获取及仿…

作者头像 李华
网站建设 2026/7/15 20:09:40

IMU和GPS ekf融合定位 从matlab到c++代码实现 基于位姿状态方程

IMU和GPS ekf融合定位 从matlab到c代码实现 基于位姿状态方程&#xff0c;松耦合 文档且详细 蹲在实验室捯饬了三天咖啡机之后&#xff0c;我终于把IMU和GPS的EKF融合算法从Matlab搬到了C。这事儿就像把乐高积木从说明书模式切换到自由创作模式——你知道原理是对的&#xff0…

作者头像 李华