前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是类和类的成员?

什么是类和类的成员?

作者头像
高一峰
修改2020-09-22 14:16:01
2.1K0
修改2020-09-22 14:16:01
举报
文章被收录于专栏:高渡号外高渡号外高渡号外

什么是类和类的成员?

—— 新手编程1001问之C#编程基础


很多同学,在面试的时候回遇到什么是面向对象的编程?能清晰回答上来的并不多。如果再问什么是类和类的成员,那就更加懵圈了。那么到底什么是类和类的成员呢?

好的,我来回答这个问题。

在面向对象的编程中,我们接触最多、最重要的对象,就是类。而要想彻底弄明白什么是类,还必须了解清楚类的成员。下面,我们仍然以C#为例,来解答这个问题。

问题的第一部分,什么是类?

通俗的理解,类就是对具有相同特征(如属性或方法)的对象进行的一种描述。

其实,你也可以理解为将具有不同特征和属性的对象进行归类,所以,取了一个“类”字做定义。你还可以理解为类型,Type,这个似乎更贴切一点,事实上,在泛型中,一般就是取Type的一个T字母当做通用的类名。

当然,上面的这些还不足以让你真的理解了类的含义。因为,如果你理解为“归类”的类,你就总是会视图去寻找一堆相似的“类”,但其实没有什么相似的类,类一旦定义就只有那么一个特定的“类”。而你如果完全理解为类型,又容易陷入把它理解为对象的某个特征属性,最终在你心里变成了“类是对对象某类特征的一种描述”,就像规格型号之类的。显然,这些都不准确。

事实上,我们应该跳出类的概念本身去理解类。比如,我们可以尝试从类的用途去理解它。首先,类是用来描述对象的。比方说,我们创建一个实体数据类,用于描述一个学生群体,那么,在这个类对象中,我们会定义一些字段和属性,用于描述这个学生群体的特征。比如:班级、姓名、性别、生日、学号等等。那么,你看看,这样一个类一旦被定义,它所描述或者代表的是什么?是一个学生群体。一个具有相同属性的群体。所以,对这样的群体来说,它们不是具有共同的类别特征吗?把它们称之为一个类不是很恰当吗?哈哈,你终于懂了,什么是类,其实就这么简单,不要拘泥于概念本身,不识庐山真面目,只缘身在此山中啊。

理解了类的含义,接下来,我们看看,如何定义一个类?

在C#中,除了语言本身定义的最基础的基类object和几个基本的数据类型(几种数字类型和字符串类型)以外,我们将面临大量的自定义类。因为,我们需要处理的应用项目中的任何一个部分,甚至包括一个程序代码块,它就是一个对象。在C#编程中,定义一个复杂对象最好的方法,是将这个对象定义为一个类。

那么,如何定义一个类呢?

类是一个对象,也是程序的构成部分。

类可以有修饰符,修饰符有很多种,最常用的是public,表示它在当前范围内全局有效。

class MyClassName
{
    ......
}
public class MyClassName
{
    ......
}

当然,类不是一个空壳,它是由类的成员构成的。

那么,引出问题的第二部分,什么是类的成员?

什么是类的成员?这个其实很好理解,对吧?成员就是成员,它是构成一个类的组成部分,是对构成一个类的完整描述的重要内容。不同的类型的对象,需要使用不同的成员来描述,比如上面举例的学生类,它是作为一种数据类来定义,主要使用描述数据的字段和属性来构成,有时也会使用到方法(程序)。我们说一些具有特定功能的代码块也是一个对象,因为也可以定义为一个类,那么这样的类所集成的就是一些方法,它能实现一些特定的功能。

我们把这些构成类的字段、属性和方法,统称为类的成员,分述如下。

类的成员之一:字段

定义:字段是与类相关的变量。

声明:与变量的声明类似,不同的是它的前面还可以添加修饰符。

声明:(static/readonly) <Type> <变量名称>

1、通常可以理解为类的私有变量(默认私有private,修饰符省略)。

2、字段的定义通常以小写字母开头或 “_” 开头。

3、字段声明常用修饰符:static(静态)和readonly(只读)。

public class Xyy
{
 //字段就是类的变量,用来存储数据
 string _name;
 int _age;
 char _gender;
}

评语:类因为可以定义字段,让一个具有复杂特性的对象立刻拥有了描述的手段。

类的成员之二:属性

1、通常理解为类的公有变量,修饰符public。

2、定义属性,通常有 get 和 set 两个方法。

3、get 支持读的访问,返回与属性声明类型相同的数据,调用时可以得到属性内部的字段的值或引用。

4、set 支持写的访问,它的作用是调用时,可以给属性内部字段或引用赋值。

5、类的成员默认都为私有,但属性通常是公有变量,因此一般使用public修饰符。

6、属性可以忽略get或set访问器,但是不能两个同时都忽略。

public class MyClassName
{
 //类的属性
 public int x { get; set; }
 public string y { get; }
 public datetime z { set; }
}

评语:属性的公有变量特征,让拥有该成员的类,具有了能够存储大量且不同类型数据的特性,比如,数据模型类。

类的成员之三:方法

方法是一种特殊的成员,简单说,它就是类中包含的能实现一定功能的程序代码块。

1、方法可以具有参数列表,用于表示传递给方法的值或变量引用,参数也必须指定类型。

2、方法的签名必须在所属类中唯一。方法签名包含方法名称、参数及其数量、修饰符和类型。

3、方法的返回类型,用于指定方法返回的值的类型。注意方法签名不包含返回类型。

4、无返回值的方法,其返回类型为 void。

5、方法分静态方法和实例方法,静态方法是通过类进行访问,实例方法是通过类实例进行访问。

public class MyClassName
{
    //类包含的方法:静态无返回值方法
 static void MyMethodName(string[] x)
    {
 int i = 0;
 while (i < x.Length)
        {
            Console.WriteLine(x[i]);
            i++;
        }
    }
}
//方法的调用
string[] xyz = new string[] { 'x','y','z' };
MyMethodName(xyz);    //内部调用
MyClassName.MyMethodName(xyz);    //外部调用
//调用结果
x
y
z

评语:因为方法的存在,让不同的类拥有了不同的功能。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 高渡号外 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是类和类的成员?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档