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

C# 面向对象特性

        面向对象编程的三大基本特性是:封装继承多态。下面将详细介绍这三大特性在C#中的体现方式。

封装

定义:把对象的数据和操作代码组合在同一个结构中,这就是对象的封装性。

体现方式

  • 使用访问修饰符控制成员的可见性

  • 通过属性(Property)封装字段

  • 使用方法封装实现细节

访问修饰符

关键字

范围

描述

public

公共成员

无限制访问

protected

保护成员

当前类及其派生类

private

私有成员

当前类内部成员访问

internal

内部成员

仅在当前程序集访问

protected internal

保护内部成员

仅限于当前程序集或该类的派生类访问

属性

 //1.全写
private string name;
public string Name
{get { return name; }set { name = value; }
}//2.全简写
public int Age { get; set; }//3.半简写
private string address;
public string Address => address;  //等价于 public int Age { get { return age; } }//4.只读,不可写入
public float Money { get; }
public float PrivateMoney { get; private set; }//5.get set有代码的简写
//属性的用途之一:此处体现了属性的好处,用get给属性赋初值,set赋值可省去一个SetIntroduction()方法,使代码更简洁
private string introduction;
public string Introduction
{get => string.Format($"{introduction}My name is {name}, I am {Age} years old");set => introduction = string.Format($"Hello {value}, ");
}//等价于
//public string Introduction
//{
//    get
//    {
//        return string.Format($"{introduction}My name is {name}, I am {Age} years old");
//    }
//    set 
//    {
//        introduction = string.Format($"Hello {value}, ");
//    }//}

继承

体现方式

  • 使用 : 符号实现类继承,派生类继承基类的成员

  • 可以使用 sealed 关键字阻止进一步继承

  • 支持单继承(类只能继承一个基类),但能继承多个接口

继承基类

// 基类
public class Animal
{public string Name { get; set; }public virtual void MakeSound(){Console.WriteLine("Animal makes a sound");}
}// 派生类
public class Dog : Animal
{public override void MakeSound(){Console.WriteLine("Bark bark!");}public void Fetch(){Console.WriteLine("Fetching the ball");}
}// 使用
Animal myDog = new Dog();
myDog.MakeSound(); // 输出: Bark bark!

多态

体现方式

  • 方法重写(override)和虚方法(virtual)

  • 抽象类(abstract)和抽象方法

  • 接口(interface)实现

  • 方法重载(overload)

方法重载

定义:在同一个类中定义了相同名称的多个方法成员的能力。唯一的区别是它们具有不同的签名(即具有不同的参数类型或不同的参数个数)。

注意:

1、返回类型不是方法签名的一部分:当两个方法只有返回类型不同时,不能算作方法重载。

2、形参名称也不是方法签名的一部分:当两个方法只有形参名称不同时,不能算作方法重载。

方法重写

在派生类中通过重写虚方法实现抽象方法、实现接口成员来实现多态。

重写虚方法

 public class Animal{public virtual void Speak(){Console.WriteLine("Hello World!");}}public class Dog : Animal{public override void Speak(){Console.WriteLine("汪汪汪");}}

实现抽象方法

1、抽象方法必须声明抽象类中

2、抽象类的派生类必须重写基类抽象方法

3、抽象类中可以包含非抽象方法,但非抽象类不能包含抽象方法

4、抽象成员不能是私有的、抽象类不能实例

public abstract class Animal
{public abstract void Speak();}public class Dog : Animal
{public override void Speak(){Console.WriteLine("汪汪汪");}
}

实现接口成员

public interface Animal
{public void Speak();}public class Dog : Animal
{public void Speak(){Console.WriteLine("汪汪汪");}
}

总结

C#中面向对象的三大特性通过以下方式体现:

  1. 封装:通过访问修饰符、属性和方法实现数据隐藏和保护

  2. 继承:通过类继承机制实现代码复用和层次关系

  3. 多态:通过虚方法、抽象类、接口和方法重载实现同一操作作用于不同对象时产生不同行为

这三大特性共同构成了面向对象编程的基础,使代码更易于维护、扩展和重用。

http://www.xdnf.cn/news/746983.html

相关文章:

  • 吉林第三届全国龙舟邀请赛(大安站)激情开赛
  • 打卡day41
  • Kanass入门教程- 事项管理
  • 科普:Linux `su` 切换用户后出现 `$` 提示符,如何排查和解决?
  • 山东大学软件学院项目实训-基于大模型的模拟面试系统-面试官和面试记录的分享功能(2)
  • InfluxDB 高级函数详解:DERIVATIVE、INTEGRAL、SPREAD、HISTOGRAM 与 DIFFERENCE
  • [SC]SystemC在CPU/GPU验证中的应用(五)
  • 22睿抗省赛真题
  • DAY41
  • 【SLAM自救笔记1】:苟活
  • 【Netty系列】消息编码解码框架
  • LeetCode[110]平衡二叉树
  • 第6章 放大电路的反馈
  • AI Agent、Function Calling 与 MCP 协议的原理与实践
  • Linux系统-基本指令(4)
  • 评标专家随机抽选系统-建设方案——仙盟创梦IDE
  • WEB3——简易NFT铸造平台之nft.storage
  • 【知识点进阶】
  • Java 中 Redis 过期策略深度解析(含拓展-redis内存淘汰策略列举)
  • TI MSPM0G3507 简易PID项目显示和按键控制
  • [SLAM自救笔记0]:开端
  • 安装win11之后,电脑经常会跳出“无法在此设备上加载驱动程序”的提示。无法加载的驱动程序分别为“pcdsrvc_x64.pkms”“iqvw64e.sys”
  • OpenHarmony标准系统-HDF框架之音频驱动开发
  • 2.2HarmonyOS NEXT高性能开发技术:编译优化、内存管理与并发编程实践
  • Spring Cache核心原理与快速入门指南
  • Leetcode 1908. Nim 游戏 II
  • 【shell】让 CPU 运行到满负荷状态
  • 传统液晶瓶颈待破?铁电液晶如何实现显示技术逆袭
  • 快速掌握 GO 之 RabbitMQ
  • 嵌入式编译工具链熟悉与游戏移植