首页 > 编程语言 >C# 面向对象描述

C# 面向对象描述

时间:2024-12-25 11:27:35浏览次数:5  
标签:Draw C# Car void 面向对象 描述 public 属性

在 C# 编程的世界里,面向对象编程(OOP)是构建健壮、可维护代码的基石,而理解堆栈内存的原理则如同掌握了代码运行背后的 “幕后魔法”,能让我们编写出更高效、更优质的程序。

面向对象编程的核心概念包括类(Class)、对象(Object)、封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。

一、C# 对象

类就像是一个蓝图,它定义了对象的属性和行为。例如,我们定义一个简单的 “Car” 类:

class Car
{
    public string Color;
    public int Speed;

    public void Drive()
    {
        Console.WriteLine($"Driving the {Color} car at {Speed} mph.");
    }
}

 

代码中,“Color” 和 “Speed” 是类的字段,代表车的属性,而 “Drive” 方法则定义了车的行为。

对象则是根据类这个蓝图创建出来的具体实例。在 C# 中,我们可以这样创建一个 “Car” 对象:

Car myCar = new Car();
myCar.Color = "Red";
myCar.Speed = 60;
myCar.Drive();

 

通过 “new” 关键字,我们实例化出了 “myCar” 这个具体的车对象,并且给它赋予了红色的颜色和 60 的速度,最后调用它的 “Drive” 方法,让它 “跑” 起来。

封装是将数据和操作数据的方法捆绑在一起,对外部隐藏内部实现细节,只暴露必要的接口。在 “Car” 类中,外部代码只能通过我们定义的公共属性和方法来访问和操作对象,内部的字段具体存储方式等细节被封装了起来。

继承允许我们创建一个新类,从已有的类中获取属性和方法,新类被称为子类,已有类称为父类。比如我们创建一个 “SportsCar” 类继承自 “Car” 类,它可以继承 “Car” 类的属性和方法,同时还能添加自己特有的功能,像更快的加速性能等。

多态则使得不同类的对象可以对相同的消息做出不同的响应,通过虚方法、抽象类等机制实现,让代码更加灵活和可扩展。

二、封装

封装是 C# 面向对象编程的一大法宝。回到 “Book” 类,外部代码若想访问或修改书籍信息,只能通过我们定义的公共属性和方法。比如,“PageCount” 的内部存储细节、“DisplayInfo” 方法的具体实现算法,都被隐藏在类的内部,对外界不可见。这有效防止了外部代码的随意篡改,保障了数据的安全性与一致性,就像给珍贵的书籍套上了一层坚固的保护套。

三、继承

继承使得代码复用与功能扩展变得轻松自如。假设我们要创建一个 “EBook” 类,它除了具备普通书籍的特性外,还有自己独特的属性如文件格式 “Format”:

class EBook : Book
{
    public string Format;

    public void DisplayEBookInfo()
    {
        Console.WriteLine($"Title: {Title}, Author: {Author}, Pages: {PageCount}, Format: {Format}");
    }
}

EBook” 类继承自 “Book” 类,它自动获得了 “Book” 类的所有非私有属性与方法,无需重复编写,同时又能依据自身需求添加专属特性,大大节省了开发精力,让代码的演进如虎添翼。

四、多态

多态赋予不同类的对象以独特的 “个性”。考虑一个绘图程序,有 “Circle”“Rectangle” 等不同形状类,它们都继承自抽象的 “Shape” 类,并实现 “Draw” 方法: 

abstract class Shape
{
    public abstract void Draw();
}

class Circle : Shape
{
    public override void Draw()
    {
        Console.WriteLine("Drawing a circle");
    }
}

class Rectangle : Shape
{
    public override void Draw()
    {
        Console.WriteLine("Drawing a rectangle");
    }
}

当在程序中统一调用 “Draw” 方法时,不同形状的对象会各自执行对应的绘制逻辑,这种灵活性让程序能轻松应对复杂多变的需求,仿佛拥有了七十二变的本领。

总之,熟练掌握 C# 面向对象编程的这些关键特性,能够助力开发者打造出结构清晰、易于维护、功能强大的软件系统。

标签:Draw,C#,Car,void,面向对象,描述,public,属性
From: https://blog.csdn.net/ygd01/article/details/144704146

相关文章

  • C# 基础语法详解:开启编程新世界
    C#作为一门功能强大、应用广泛的编程语言,深受开发者们的喜爱。今天,就来为大家详细剖析一下C#的基础语法,无论你是编程小白渴望入门,还是有一定基础想要查漏补缺,相信这篇文章都能助你一臂之力。一、变量与数据类型变量就像是一个个小盒子,用来存放数据。在C#中,声明变量时需......
  • C# 数据类型全解析:深入理解编程基石
    在C#编程的世界里,数据类型犹如大厦的基石,支撑着整个程序的构建与运行。对数据类型有透彻的理解,是编写高效、可靠代码的关键。本文将带您深入探索C#中的数据类型,揭示其奥秘与应用之道。一、值类型与引用类型的本质区别C#的数据类型总体上可分为值类型和引用类型,这一区分......
  • 计算机图形学——Ray Tracing 反射、折射(Snell’s Law 斯涅尔定律)、 菲涅耳反射系数、
    1.反射方向的计算反射方向的计算是光线追踪中一个重要的数学过程,用于模拟光线在物体表面反射的行为。通过计算反射方向,可以生成新的光线来追踪反射光的传播路径。1.1反射方向公式:反射光的方向基于光的反射定律:入射角等于反射角,且反射光方向与表面法线关于法线对称。数......
  • VSCode配置启动Vue项目
    VSCode配置启动Vue项目|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------------|-------------|-------------|--......
  • windows环境下elasticsearch分词器elasticsearch-analysis-ik安装
    windows环境下elasticsearch分词器elasticsearch-analysis-ik安装|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------......
  • [Chromium] Timer
    Chromium的Timer机制实现是依据其Base库的Thread实现的sequence_manager持有taskqueuetaskqueue创建taskrunnerTimerBase纯虚类,抽象类型。存放了taskrunner,应该是真正的用于跑定时任务的循环就存在这个类型的对象中DelayTimerBase继承自TimerBase,是纯虚类,被OneShotTi......
  • 解决The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0.
    前言当我们要使用sass做一些炫酷的动画时候,需要用一些高阶语法例如random()以及加减乘除变量@for等等,但是sass版本过低会不支持我们的语法,在此记录下区分vue2和vue3引用sass。这里切记能用css做动效就尽量不要用js,渲染效果在越是复杂的动画就差别越大。 vue2"sass":"~1......
  • Web工程(Dynamic Web Project)下,创建web service,及其调用
    一、创建webservice1、建立动态Web工程(DynamicWebProject),工程名为MyWebService-server。编写类MyService(注意:webservice拉面的类名首字母必须是小写)。2、新建一个WebService,在弹出的窗口中找到Serviceimplementation一项:指定要发布的服务a.选中项目,点击鼠标右键new->ot......
  • 2024/12/25 任务【multi-objective optimization algorithm 多目标优化算法】解决问题
    知识点:Git配合Github的简单使用,硕士开题报告:选题意义(10分),难易程度(5分),对国内外现状的综述(5分)论文的开题报告,写好这些就够了!_哔哩哔哩_bilibili:写清楚研究方向研究的意义现在做到什么程度存在哪些问题你想怎么解决准备用哪些数据去验证你的成果参考文献Github新手够用指......
  • jquery数字动画插件animationCounter.js
    animationCounter.js是一款小巧的数字动画jquery插件。该jquery数字动画插件可以将数字以动画的方式从一个值变化到另外一个值。它使用简单,兼容ie8浏览器,非常实用。在线预览  下载 使用方法在页面中引入jquery和animationCounter.js文件。<scriptsrc="js/jque......