当前位置: 首页 > news >正文

C#教程(一):面向对象

1、介绍

C#是一种多范式编程语言,但其中一个主要的编程范式是面向对象编程(OOP)。面向对象编程有一些特点,而C#提供了丰富的功能来支持这些特点。

2、面向对象特点

  1. 封装(Encapsulation):

    • 封装是将数据和方法捆绑在一起的概念,同时对外部隐藏实现的一部分。在C#中,使用访问修饰符(public、private、protected等)来控制对类的成员的访问。
  2. 继承(Inheritance):

    • 继承是一种通过创建新类并重用现有类的属性和行为的方式。在C#中,使用冒号(:)来实现继承关系。
  3. 多态(Polymorphism):

    • 多态性是指同一个方法可以在不同的类中有不同的实现。C#支持两种类型的多态性:编译时多态性(静态多态性)和运行时多态性(动态多态性)。编译时多态性是通过方法的重载和运算符重载实现的,而运行时多态性则是通过虚方法和接口实现的。
  4. 抽象类和接口(Abstract Classes and Interfaces):

    • C#支持抽象类和接口,它们都是实现抽象和多态性的重要手段。抽象类可以包含抽象方法和具体方法,而接口只能包含抽象方法。
  5. 类和对象(Classes and Objects):

    • C#中的类是用户定义的数据类型,用于封装数据和方法。对象是类的实例,通过类的构造函数创建。类和对象是面向对象编程的基本构建块。
  6. 成员访问修饰符(Access Modifiers):

    • C#提供了不同的成员访问修饰符,如public、private、protected等,用于控制对类的成员的访问。这有助于实现封装。
  7. 属性和索引器(Properties and Indexers):

    • 属性允许类提供对其字段的访问,并允许在访问字段之前或之后执行特定的逻辑。索引器允许类的实例像数组一样进行访问。
  8. 重载和覆盖(Overloading and Overriding):

    • C#支持方法和运算符的重载,使您能够在同一类中定义具有相同名称但不同参数列表的多个方法。此外,通过使用关键字override,子类可以覆盖父类的虚方法。

这些特点使得C#成为一种强大的面向对象编程语言,能够支持灵活、可维护和可扩展的代码设计。

3、示例

创建一个Person类,其中包含nameagegender三个属性

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _02_面向对象复习
{public class person{//字段 属性 方法private string _name;public string Name{get { return _name; }set { _name = value; }}private int _age;public int Age{get { return _age; }set { _age = value; }}private char _gender;public char Gender{get { return _gender; }set { _gender = value; }}public void SayHello(){Console.WriteLine("{0},{1},{2}", this._name, this._age, this._gender);Console.ReadLine();}}
}

接着在Program.cs中实例化一个person对象,并给Person的三个属性分别赋值

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _02_面向对象复习
{class Program{static void Main(string[] args){person p = new person();p.Age = 10;p.Name = "张三";p.Gender = '男';p.SayHello();}}
}

4、运行结果

在这里插入图片描述

http://www.lryc.cn/news/259718.html

相关文章:

  • Linux系统中部署minio服务、开启反向代理、二级域名SSL加固
  • PMP备考总结:项目管理PMP考试提高通过率,轻松上岸~
  • shell脚本中获取当前脚本的绝对路径
  • SSD基础架构与NAND IO并发问题探讨
  • 激光雷达反射率定标板如何提取障碍信息
  • 【开源】基于JAVA的桃花峪滑雪场租赁系统
  • 将VOC2012格式的数据集转为YOLOV8格式
  • DevExpress WinForms Pivot Grid组件,一个类似Excel的数据透视表控件(二)
  • 为什么越来越多的人从事软件测试行业?
  • ERP数据仓库模型
  • 基于单片机的智能小车 (论文+源码)
  • Redis和MySQL双写一致性实用解析
  • win10彻底永久关闭自动更新的方法
  • 【webpack】初始化
  • 服务器GPU占用,kill -9 PID 用不了,解决办法
  • Vue学习笔记-Vue3中的toRaw和markRaw
  • 【Android Audio Focus 音频焦点】
  • ChatGPT一周年,一图总结2023生成式AI里程碑大事件时间线
  • Python 接口测试response返回数据对比的方法
  • LainChain 原理解析:结合 RAG 技术提升大型语言模型能力
  • 6-6 堆排序 分数 10
  • 高翔《自动驾驶与机器人中的SLAM技术》第九、十章载入静态地图完成点云匹配重定位
  • 英语六级翻译
  • VMware配置Ubuntu虚拟机
  • Backtrader 文档学习-Platform Concepts
  • 策略模式(常用)
  • Express中使用Swagger
  • 【C++】单一职责模式
  • GPT4-隐者地址
  • 教师考编需要什么条件