Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >什么是类和类的成员?

什么是类和类的成员?

作者头像
高一峰
修改于 2020-09-22 06:16:01
修改于 2020-09-22 06:16:01
2.3K00
代码可运行
举报
文章被收录于专栏:高渡号外高渡号外
运行总次数:0
代码可运行

什么是类和类的成员?

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


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

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

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

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

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

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

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

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

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

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class MyClassName
{
    ......
}
public class MyClassName
{
    ......
}

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

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

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

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

类的成员之一:字段

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

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

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Xyy
{
 //字段就是类的变量,用来存储数据
 string _name;
 int _age;
 char _gender;
}

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

类的成员之二:属性

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

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

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MyClassName
{
 //类的属性
 public int x { get; set; }
 public string y { get; }
 public datetime z { set; }
}

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

类的成员之三:方法

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

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

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MyClassName
{
    //类包含的方法:静态无返回值方法
 static void MyMethodName(string[] x)
    {
 int i = 0;
 while (i < x.Length)
        {
            Console.WriteLine(x[i]);
            i++;
        }
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//方法的调用
string[] xyz = new string[] { 'x','y','z' };
MyMethodName(xyz);    //内部调用
MyClassName.MyMethodName(xyz);    //外部调用
//调用结果
x
y
z

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

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java 语言基础 (类和对象, 方法和封装, static 关键字和继承, 多态和特殊类)
ReturnType methodName(DataType... args) {}
RendaZhang
2020/09/08
8240
Java 语言基础 (类和对象, 方法和封装, static 关键字和继承, 多态和特殊类)
【深入浅出C#】章节 4: 面向对象编程基础:类和对象的概念
类和对象是面向对象编程中最基本的概念,它们在程序设计中起着重要的作用。类是一种抽象的数据类型,用于描述具有相似属性和行为的一组对象。对象则是类的实例,代表了现实世界中的具体事物或概念。 面向对象编程的核心思想是将现实世界的事物抽象成类,通过创建对象来模拟和处理问题。类和对象的概念使得程序能够更加模块化、可维护和可扩展。下面是类和对象在面向对象编程中的重要性:
喵叔
2023/07/09
4430
一篇文章带你了解Java类的设计和封装及类成员的访问控制
前面几篇文章用Java带大家一起了解了几个游戏小项目,感兴趣的小伙伴可以点击文章观摩下,手把手教你用Java打造一款简单故事书(上篇)、手把手教你用Java打造一款简单故事书(下篇)、手把手教你用Java打造一款简单考试系统(上篇)、手把手教你用Java打造一款简单考试系统(下篇)、手把手带你用Java打造一款对对碰游戏(上篇)、手把手带你用Java打造一款对对碰游戏(下篇)、手把手带你用Java实现点灯游戏(上篇)、手把手带你用Java实现点灯游戏(下篇),接下来的几篇文章是关于Java基础的,希望对大家的学习有帮助,欢迎大家在讨论区留言。
Java进阶者
2021/01/22
5020
【Java基础】类的成员总结(属性,方法,构造器,代码块,内部类)
类中方法的声明和使用: 方法:描述类应该具有的功能。 比如:Math类:sqrt()\random() … Scanner类:nextXxx() … Arrays类:sort() \ binarySearch() \ toString() \ equals() \ …
小尘要自信
2023/10/10
5740
【Java基础】方法、类、对象
Java语言规定,在同一个类中,允许出现同名的方法,只要方法的参数列表不同即可,这就是方法的重载。
全栈开发日记
2022/05/12
3980
java从入门到精通四(面向对象上,类与对象的实现,代码块的执行顺序)
面向对象的方法主要是把事物对象化,包括属性和行为。而面向对象编程则比较贴近生活的实际,也就说,在程序中的编程,力图对描述的事物在现实中的形态保持一致。为了做到这一点,我们java中也就有类和对象的概念。类是对一类事物的抽象,类下就有若干对象,对象用于描述类中事物的个体。说来光看定义还是比较抽象,不容易理解。我们在下面的编程实践中可以大致理解这种思维模式。
兰舟千帆
2022/07/16
7660
java从入门到精通四(面向对象上,类与对象的实现,代码块的执行顺序)
Java基础(七):面向对象编程-类和对象
冬天vs不冷
2025/01/21
910
Java基础(七):面向对象编程-类和对象
Java_抽象类_接口
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
用户10551528
2023/05/09
2730
Java语法手册 三(面向对象)
Java中的类是将现实世界中的概念模拟到计算机中 在Java中创建一个类 要使用: class,一个类名,一对大括号{};
Java_慈祥
2024/08/06
860
【JavaSE学习】Day4JavaSE面向对象 (上) 看这三篇就够了
        Day1 JavaSE环境配置         Day2 JavaSE基础语法         Day3 JavaSE数组         Day4 JavaSE面向对象(上)         Day5 JavaSE面向对象(中)         Day6 JavaSE面向对象(下)         Day7 JavaSE面向对象          Day8 JavaSE异常处理         Day9 JavaSE多线程         Day10 JavaSE集合         Day11 JavaSE泛类         Day12 JavaSEIO流         Day13 JavaSE反射
小小程序员
2023/02/24
3090
【JavaSE学习】Day4JavaSE面向对象 (上) 看这三篇就够了
走进C# abstract,了解抽象类与接口的异同
  最近在研究.NET Core的一些类库源码的时候发现在底层类库中使用了大量的抽象类,然而发现自己搬砖这么多年好像从来没有在项目中使用抽象类或者抽象方法去实现某个功能模块,并且对修饰符Abstract概念也只懂得一些皮毛(也就是面试的时候会问下其基本作用)。当然,咱们不懂就要去慢慢的学习了解,不能让这些不懂的技术和知识点一直困扰着我们。接下来就让我们一起去探索C# Abstract修饰符的作用,并且了解在什么场景下我们会使用到抽象类,从而提升我们项目的健壮性。
追逐时光者
2020/11/12
7630
Java面向对象——类及类的成员
本讲主要初步了解面向对象,介绍了类的组成部分,并且通过Person类来讲解了类的属性和方法,因为Java是面向对象开发的,所以在项目中会创建很多类和对象,所以这一讲是十分重要的。我们也认识了方法的定义和调用,后续也会写很多方法进行实战。
小明爱吃火锅
2023/09/28
2820
-1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态
面向对象把功能逻辑封装到类本身,用对象去调用功能 持有数据,结构更加自然,也更符合人们的思维习惯
noteless
2018/09/11
6910
-1-2 java 面向对象基本概念       封装继承多态 变量 this super  static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态
C#面向对象基础01
C#语言是一种现代、面向对象的语言。面向对象程序设计方法提出了一个全新的概念:类,它的主要思想是将数据(数据成员)及处理这些数据的相应方法(函数成员)封装到类中,类的实例则称为对象。这就是我们常说的封装性。
Echo_Wish
2023/11/30
1770
05 Java 类和对象
面向对象是 Java 最重要的特性。Java 是彻底的、纯粹的面向对象语言,在 Java 中“一切都是对象”。本章将介绍面向对象基础知识。
acc8226
2022/05/17
6380
05 Java 类和对象
(还在没有对象而发愁吗,new出来)->Java面向对象入门
强调的是我该怎么去做。即功能的执行过程,即先干啥,后干啥。在面向过程中,我们会写很多的函数,每一个函数负责完成某一个功能。
上分如喝水
2021/08/16
8770
(还在没有对象而发愁吗,new出来)->Java面向对象入门
【C#学习笔记之一】C#中的关键字
C#中的关键字 关键字是对编译器具有特殊意义的预定义保留标识符。它们不能在程序中用作标识符,除非它们有一个 @ 前缀。例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字。 下面是列出的所有的关键字在 C# 程序的任何部分都是保留标识符: abstract  as base bool break byte case catch char checked class const continue d
Angel_Kitty
2018/04/09
2.4K0
C#关键字常见面试题
不仅仅为了面试而学习,更多的是查漏补缺、扩充知识面和大家共同学习进步(文章中有描述不当的地方欢迎文末留言指正,我会及时改正🤞)。
追逐时光者
2024/02/22
1730
C#关键字常见面试题
C# 学习笔记(3)—— 类和结构体
类代表一组具有公共属性和行为的对象。比如人,有眼睛、鼻子、嘴巴这些属性以及走路、说话等这些行为,这些属性和行为是公共的
Karl Du
2023/10/20
2690
JavaSE学习总结(四)——Java面向对象十分钟入门
本文介绍了Java编程语言的基础知识,包括变量、数据类型、运算符、流程控制、方法、类和接口。同时也介绍了Java的面向对象编程(OOP)特性和常用的开发工具与框架。
张果
2018/01/04
1.6K0
JavaSE学习总结(四)——Java面向对象十分钟入门
推荐阅读
相关推荐
Java 语言基础 (类和对象, 方法和封装, static 关键字和继承, 多态和特殊类)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验