首页 后端开发 C#.Net教程 C#学习日记13---类(Class)的声明与定义

C#学习日记13---类(Class)的声明与定义

Jan 20, 2017 pm 01:51 PM

 类作为面向对象的灵魂,在C#中有着相当广泛和深入的应用,对类的深度掌握自然是我们学习C#重要的一个环节.有关类的意义上一篇  C#学习日记12---引用类型 中已经给出了,这里就不再重复了.说到 类 就不得不说下与之息息相关的内容----对象.

类与对象:

           类:  从具有相同属性的事物当中抽象出来的概念,一般用来描述同类个体的集合。

    对象: 从类当中具体化的一个个体。(比如人类就是一个类, 张三 就是人类中的一个对象)

    属性:用来描述对象特征的。   (在类里面,是类的数据成员^_^)

    方法:   说明对象具有的能力。   (在类里面,是类的数据成员^_^,在C/C++中它叫函数,以后要改口啦)

    事件:  具有触发能力的函数.        

                (与方法不同的是,事件是被动,由外部事物发出,受动者是对象; 而方法是由对象主动发出的动作,是类的数据成员)

 

类的定义:

    类的定义是以关键字 class 开始,后跟类的名称。类的主体,包含在一对花括号内。

访问修饰符 class  类名
   {
        访问修饰符数据成员;
   }
登录后复制

举个例子:

 public class Student
      {
            private string name;
            private int age;
     }
登录后复制

访问类里面的数据成员方式与 Struct类型 一样,您要使用(.)点运算符(链接了对象的名称和成员的名称),对于访问修饰符,这里对 private、public、internal 稍微说一下(以后我会细说哒):

private: 私有访问。只限于本类成员访问,子类,实例(对象)都不能访问 (换句话说供类自身调用)。

public: 公有访问。不受任何限制,所有类都可访问。

internal: 同一个程序集中的所有类均可访问,可以想象成Public 的其中一个程序集集合。

如果没有指定访问修饰符,相关的访问权限就会使用默认权限,类的默认权限是 internal, 成员的默认权限是private; 所以当我们以后出现了有关访问权限问题的时候,记得看看是不是没指定访问修饰符或者使用不适当。

创建对象:

也可以说是对类进行对象实例化,需要采用 new 语句。拿上面定义好的类举例子 Student stu = new Student(); 此时会调用Student类当中的 构造方法(函数,通俗的理解为初始化函数吧,以后在说构造函数与析构函数),如果没有默认将数据成员赋值为0;

下面就写个列子:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
  
namespace Test  
{   //定义的一个类,类名叫People  
    public class People  
    {   
      //全部指定为公有成员  
        public string name;      
        public char sex;          
        public uint age;  
      
    }  
  
    class Program  
    {  
         
        static void Main(string[] args)  
        {  
            People person = new People();        //实例化一个类,对象名叫 person  
            Console.WriteLine("输入姓名: ");  
            person.name = Console.ReadLine();   //  全部轻松访问,没有压力   
            Console.WriteLine("请输入性别:");  
            person.sex = Console.ReadKey().KeyChar;    //char 类型转换  
            Console.WriteLine("\n请输入年龄:");  
            person.age = uint.Parse(Console.ReadLine());   //强制类型转换  
            Console.WriteLine("您的姓名是:{0}\t您的性别是:{1}\t您的年龄是:{2}",person.name,person.sex,person.age);  
  
        }  
    }  
}
登录后复制

运行下:

498.png

看完上面写的代码,发现 这与 Struct类型 除了名字不同外有何区别?? 在上面的程序中确实没有区别(所有成员都是Public),看下面这个:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
  
namespace Test  
{   //定义的一个类,类名叫People  
    public class People  
    {   
      //全部指定私有成员  
        private string name;      
        private char sex;          
        private uint age;  
  
        //定义public 方法作用是输入与输出  
        public void input()  
        {  
            Console.WriteLine("输入姓名: ");  
            name = Console.ReadLine();     
            Console.WriteLine("请输入性别:");  
            sex = Console.ReadKey().KeyChar;    //char 类型转换  
            Console.WriteLine("\n请输入年龄:");  
            age = uint.Parse(Console.ReadLine());   //强制类型转换  
          
        }  
        public void output()  
        {  
            Console.WriteLine("您的姓名是:{0}\t您的性别是:{1}\t您的年龄是:{2}",name, sex,age);  
          
        }  
      
    }  
  
    class Program  
    {  
         
        static void Main(string[] args)  
        {  
            People person = new People();        //实例化一个类,对象名叫 person  
  
            person.input();         //通过调用 public 方法访问privat 成员并赋值  
  
            person.output();    //此时无法使用直接使用 Console.WriteLine(person.name)输出,访问权限不够  
  
        }  
    }  
}
登录后复制

    运行过于上面一模一样,在class类中我们可以定义方法,(上面的input与output是两个方法)而在Struct 结构体中不能定义方法,而且我们将People类中的属性指定为private 私有成员,外界对象person无法直接访问,只能通过People中指定的Public方法访问。举个例子吧:  当我俩打电话的时候,我俩并没有面对面的交流,而是通过 手机 这个媒介相互交换信息,此时 手机就可以看作你的一个public方法,你就是一个类中私有成员,我就是这个类实例化的一个对象。

以上就是C#学习日记13---类(Class)的声明与定义的内容,更多相关内容请关注PHP中文网(www.php.cn)!


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

使用 C# 的活动目录 使用 C# 的活动目录 Sep 03, 2024 pm 03:33 PM

使用 C# 的 Active Directory 指南。在这里,我们讨论 Active Directory 在 C# 中的介绍和工作原理以及语法和示例。

C# 中的随机数生成器 C# 中的随机数生成器 Sep 03, 2024 pm 03:34 PM

C# 随机数生成器指南。在这里,我们讨论随机数生成器的工作原理、伪随机数和安全数的概念。

C# 序列化 C# 序列化 Sep 03, 2024 pm 03:30 PM

C# 序列化指南。这里我们分别讨论C#序列化对象的介绍、步骤、工作原理和示例。

C# 数据网格视图 C# 数据网格视图 Sep 03, 2024 pm 03:32 PM

C# 数据网格视图指南。在这里,我们讨论如何从 SQL 数据库或 Excel 文件加载和导出数据网格视图的示例。

C# 中的模式 C# 中的模式 Sep 03, 2024 pm 03:33 PM

C# 模式指南。在这里,我们讨论 C# 中模式的介绍和前 3 种类型,以及其示例和代码实现。

C# 中的质数 C# 中的质数 Sep 03, 2024 pm 03:35 PM

C# 素数指南。这里我们讨论c#中素数的介绍和示例以及代码实现。

C# 中的阶乘 C# 中的阶乘 Sep 03, 2024 pm 03:34 PM

C# 阶乘指南。这里我们讨论 C# 中阶乘的介绍以及不同的示例和代码实现。

c#多线程和异步的区别 c#多线程和异步的区别 Apr 03, 2025 pm 02:57 PM

多线程和异步的区别在于,多线程同时执行多个线程,而异步在不阻塞当前线程的情况下执行操作。多线程用于计算密集型任务,而异步用于用户交互操作。多线程的优势是提高计算性能,异步的优势是不阻塞 UI 线程。选择多线程还是异步取决于任务性质:计算密集型任务使用多线程,与外部资源交互且需要保持 UI 响应的任务使用异步。

See all articles