C#基础知识整理:基础知识(2) 类

    ,是面向对象语言的基础。类的三大特性:封装、继承、多态。最基本的特性就是封装性。
程序员用程序描述世界,将世界的所有事物都看成对象,怎么描述这个对象?那就是类了。也就是用类来封装对象。用书上的话说,类是具有相同属性和行为的对象的抽象。宝马汽车、别克汽车、五菱之光汽车… 基本具有相同的属性和行为,所以可以抽象一个汽车类,当然也可以把路人甲的宝马汽车、路人乙的别克汽车… 抽象一个汽车类。
类抽象完成后,可以实例化,实例化后的称之为一个对象,然后可以对属性赋值或运行类的方法。属性和方法同每个对象关联,不同的对象有相同的属性,但属性值可能不同;也具有相同的方法,但方法运行的结果可能不同。
类的属性和方法是被类封装的。
看如下类的定义:

using System;namespace YYS.CSharpStudy.MainConsole{    ///     /// 定义一个学校类    /// 这个类只有属性,没有方法(其实确切的来说是有一个默认的构造器方法)    ///     public class YSchool    {        ///         ///字段, 类里面定义的变量称之为“字段”        /// 保存学校的ID        ///         private int id = 0;        ///         /// 保存学校的名字        ///         private string name = string.Empty;        ///         /// 属性,字段作为保存属性值的变量,而属性则有特殊的“行为”。        /// 使用get/set来表示属性的行为。get取属性值,set给属性赋值。因此get/set称为“访问器”。        ///         /// ID属性        ///         public int ID        {            get            {                //get返回一个值,表示当前对象的该属性的属性值。                return this.id;            }            //这里的.号用于访问对象的属性或方法。            //this指当前对象,意即哪个实例在操作属性和方法,this就指哪个实例。            set            {                //局部变量value,value值是用于外部赋给该该属性的值。                this.id = value;            }        }        ///         /// 姓名属性        ///         public string Name        {            get            {                return name;            }            set            {                name = value;            }        }    }    public class YTeacher    {        private int id = 0;        private string name = string.Empty;        //这里将YSchool类作为了YTeacher的一个属性。        private YSchool school = null;        private string introDuction = string.Empty;        private string imagePath = string.Empty;        public int ID        {            get            {                return id;            }            set            {                id = value;            }        }        public string Name        {            get            {                return name;            }            set            {                name = value;            }        }        public YSchool School        {            get            {                if (school == null)                {                    school = new YSchool();                }                return school;            }            set            {                school = value;            }        }        public string IntroDuction        {            get            {                return introDuction;            }            set            {                introDuction = value;            }        }        public string ImagePath        {            get            {                return imagePath;            }            set            {                imagePath = value;            }        }        ///         /// 给学生讲课的方法        ///         public void ToTeachStudents()        {            //{0},{1},{2}是占位符,对应后面的参数。一般如果显示的内容中含有参数,我比较喜欢用string.Format。            Console.WriteLine(string.Format(@"{0} 老师教育同学们: Good Good Study,Day Day Up!", this.name));        }        ///         /// 惩罚犯错误学生的方法        ///         ///         public void PunishmentStudents(string punishmentContent)        {            Console.WriteLine(string.Format(@"{0} 的{1} 老师让犯错误的学生 {2}", this.school.Name, this.name, punishmentContent));        }        //字段、属性和方法前修饰符有:public,private,protected,internal        //public,字段、属性和方法均为公开的,不仅类中的其它成员能访问到,还可以通过类的实例访问的到。        //private,字段、属性和方法均为私有的,只能被类中的其它成员访问到,不能通过类的实例访问。        //protected,包含private特性,而且protected修饰的字段、属性和方法能被子类访问到。        //internal,在同一个程序集中和public一样,但是不能被其它程序集访问,而且子类的话,只能被同一个命名空间的子类访问到。    }}
using System;namespace YYS.CSharpStudy.MainConsole{    class Program    {        static void Main(string[] args)        {            //实例化具体对象,并且赋值            YSchool shool1 = new YSchool();            shool1.ID = 1;            shool1.Name = "清华附中";            YSchool school2 = new YSchool();            school2.ID = 2;            school2.Name = "北师大附中";            YTeacher techerS = new YTeacher();            techerS.ID = 1;            techerS.Name = @"尚进";            techerS.School = shool1;            techerS.IntroDuction = @"很严厉";            techerS.ImagePath = @"http://";            //运行当前实例的方法            techerS.ToTeachStudents();            //运行当前实例的方法,传入参数            techerS.PunishmentStudents(@"抄所有学过的唐诗一百遍");            Console.WriteLine();            YTeacher techerQ = new YTeacher();            techerQ.ID = 2;            techerQ.Name = @"秦奋";            techerQ.School = school2;            techerQ.IntroDuction = @"和蔼可亲";            techerQ.ImagePath = @"http://";            techerQ.ToTeachStudents();            techerQ.PunishmentStudents(@"抄所有学过的数学公式一遍");            Console.ReadKey();        }    }}

结果:

C#基础知识整理:基础知识(2) 类

以上就是C#基础知识整理:基础知识(2) 类 的内容,更多相关内容请关注PHP中文网(www.php.cn)!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1432188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 06:20:25
下一篇 2025年12月14日 20:55:01

相关推荐

  • C#基础知识整理:基础知识(3) 类的构造

    我们定义了yschool,yteacher类,实例化对象时: YSchool shool1 = new YSchool(); shool1.ID = 1; shool1.Name = “清华附中”; YSchool school2 = new YSchool(); school2.ID = 2; s…

    好文分享 2025年12月17日
    000
  • C#基础知识整理:基础知识(4) 继承

        前面提到过,面向对象的三大特性:封装性、继承性和多态性。封装在前面类的定义里也了解的差不多透彻了,现在看看继承的特性。继承实际是一个类对另一个类的扩展,后者称之为基类,前者称之为子类。继承就是子类拥有基类的一切属性和方法,子类还可以增加属性和方法。但是子类不能去掉父类的属性和方法。    当…

    2025年12月17日
    000
  • C# 快速排序

    c# 快速排序 using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Sort{ class QuickSorter { private static int[] myA…

    2025年12月17日
    000
  • C# 归并排序

     c# 归并排序 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Sort { class MergeSorter { /// /// 归并排序之归:归并排…

    2025年12月17日
    000
  • C# 插入排序

    c#  ,插入排序 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Sort { class InsertSorter { public static in…

    2025年12月17日
    000
  • C# 堆排序

    c#  堆排序 using System; using System.Collections; namespace Sort { public class HeapSorter { public static int[] Sort(int[] sortArray) { BuildMaxHeap(so…

    好文分享 2025年12月17日
    000
  • 鸡尾酒排序(双冒泡排序、搅拌排序或涟漪排序)

     鸡尾酒排序(双冒泡排序、搅拌排序或涟漪排序) using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace Sort { class CockTailSorter { p…

    好文分享 2025年12月17日
    000
  • C# 冒泡排序

     c# 冒泡排序 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Sort { class BubbleSorter { public static int…

    好文分享 2025年12月17日
    000
  • 排序算法测试程序入口

     排序算法测试程序入口 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Collections;using System.Diagnostics;namesp…

    好文分享 2025年12月17日
    000
  • C#基础知识整理:.NET知识

    1、什么是.NET Framework    所谓.NET FrameWork就是一个平台,它的目的是为了跨操作系统编程。它包含了很多模块,例如有windows应用程序构件,Web开发的模块等,而不同的操作系统根据自己的特性,支持其中部分模块。NET框架是采用虚拟机运行的编程平台,以通用语言运行时(…

    好文分享 2025年12月17日
    000
  • C#数据类型

        c#的数据类型可以分为3类:数值类型,引用类型,指针类型。指针类型仅在不安全代码中使用。    值类型包括简单类型(如字符型,浮点型和整数型等),集合类型和结构型。引用类型包括类类型,接口类型,代表类型和数组类型。     值类型和引用类型的不同之处是值类型的变量值直接包含数据,而引用类型的…

    好文分享 2025年12月17日
    000
  • C#基础知识整理:C#基础(1)

    c#基本结构 using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1{ class MyFirstClass { static void Main(string[] a…

    好文分享 2025年12月17日
    000
  • C#的隐式和显示类型转换

        关于隐式转换和显示转换,每种语言都有的,c#中当然也不例外。一般常用到的场合,一种是写运算表达式的时候,要保持整体的数据类型一致和计算准确,比如有一个变量a是int型,但是它是通过加减乘除得到的,那么在运算中就要考虑用显示转换,除的运算需要转换成float或double,再把结果强制转换为i…

    好文分享 2025年12月17日
    000
  • C#基础知识整理:C#类和结构(1)

    1、结构功能特性? 实现代码?结构用struct关键字定义的,与类类似,但有本质区别。结构实质是一个值类型,它不需要对分配的。结构的特性:(1)、结构作为参数传递时,是值传递。(2)、结构的构造函数必须带参数的。(3)、结构实例化可以不用new的。(4)、结构不能继承,但是可以实现接口。(5)、结构…

    好文分享 2025年12月17日
    000
  • C#基础知识整理:C#类和结构(2)

      1、什么是构造函数? 有哪些构造函数? 各个构造函数的定义、实现方法、注意事项?所谓构造函数,就是一个方法,这个方法可以初始化对象,即运行完这个函数后,内存总开辟了一块该类的对象的空间。有三种:正常的构造函数,也就是实例化构造函数;私有构造函数;静态构造函数。实例化构造器: public cla…

    2025年12月17日
    000
  • C#中使用gRPC

    由于有nuget,使得c#在配置项目时非常简单。 1. 在NuGet中添加ProtocolBuffer和gRPC引用 protocol buffer 3.0版本,在NuGet插件界面选择Include Prerelease,查找google protocol buffer。如果不选择include …

    好文分享 2025年12月17日
    000
  • C#理解泛型

    简介 Visual C# 2.0 的一个最受期待的(或许也是最让人畏惧)的一个特性就是对于泛型的支持。这篇文章将告诉你泛型用来解决什么样的问题,以及如何使用它们来提高你的代码质量,还有你不必恐惧泛型的原因。 泛型是什么? 很多人觉得泛型很难理解。我相信这是因为他们通常在了解泛型是用来解决什么问题之前…

    好文分享 2025年12月17日
    000
  • C#基础之yield与Singleton

    1.实例解析yiled的作用 最近参加java笔试题第一次见到yield这个关键字,既然遇见了那肯定要掌握,下面是c#中关于yield关键字的总结。yield这个关键字作用于迭代器块中,其最本质的功能有2个:一是“依次”向枚举对象提供值,二是发出迭代结束信号。这两个功能对应的语句分别是yield r…

    2025年12月17日
    000
  • C# 继承

    继承是面向对象程序设计中最重要的概念之一。继承允许我们根据一个类来定义另一个类来定义一个类,这使得创建和维护应用程序变得更容易。同时也有利于重用代码和节省开发时间。 当创建一个类时,程序员不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承了已有的类的成员即可。这个已有的类被称为的基…

    好文分享 2025年12月17日
    000
  • C# 多线程经典示例 吃苹果

    本文主要讲述了多线程开发中经典示例,通过本示例,可以加深对多线程的理解。 示例概述:   下面用一个模拟吃苹果的实例,说明C#中多线程的实现方法。要求开发一个程序实现如下情况:一个家庭有三个孩子,爸爸妈妈不断削苹果往盘子里面放,老大、老二、老三不断从盘子里面取苹果吃。盘子的大小有限,最多只能放5个苹…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信