面向对象编程的概念性问题
1、类和对象
这两个是完全不同的概念,不能混淆。
类(Class)是对某种类型的对象定义变量和方法的原型。它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。一个类定义了一组对象。类具有行为(be-havoir),它描述一个对象能够做什么以及做的方法(method),它们是可以对这个对象进行操作的程序和过程。
对象(object)是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
对象是类的实例化,既“类的实例”与“对象”的含义相同。比如人类是一个抽象了的类,那么你、我还有每一个个体的人都是一个对象。
2、属性和字段
字段 (field)是一个成员,它表示与对象或类关联的变量。
属性(property)是实体的描述性性质或特征。像前一例中某个人的身高、体重就是属性。
常见的情况是将字段设置为私有,通过公共属性来访问他们。
3、方法
方法基本上大家都知道,这里就不说了
给段代码示例:
public class People
{
public People()
{
//
// TODO: Add constructor logic here
//
}
private double height; //字段
private double weight; //字段
private int age; //字段
public double Height //属性
{
get { return height; }
set { height = value; }
}
public double Weight //属性
{
get { return weight; }
set { weight = value; }
}
public int Age //属性
{
get { return age;}
set { age = value;}
}
protected void AddAge() //方法
{
age++;
}
}
4、静态成员
静态成员一般包括静态属性、静态字段和静态方法。静态属性和静态字段是独立于任何对象实例的数据,而静态方法可以执行与对象类型相关,与对象实例无关的命令。
静态成员可以在类的实例中共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见。例如变量peopleNumber(默认为0)为类People的静态成员变量,那么在实例people1中peopleNumber++,再通过people2中引用时peopleNumber就等于1了。这种情况是因为静态成员存在于内存,非静态成员需要实例化才会分配内存。这就是静态成员不能访问非静态的成员的原因。
关于静态成员,百度知道里解释的不错:http://baike.baidu.com/view/536297.htm
5、接口(interface)
接口是一种约束形式,其中只包括成员定义,不包含成员实现的内容。接口的主要目的是为不相关的类提供通用的处理服务,由于C#中只允许树形结构中的单继承,即一个类只能继承一个父类,所以接口是让一个类具有两个以上基类的唯一方式。
接口我还不是特别理解,先放着,以后再补充。
6、继承
继承是面向对象程序设计的主要特征之一,它可以让您重用代码,可以节省程序设计的时间。继承就是在类之间建立一种相交关系,使得新定义的派生类的实例可以继承已有的基类的特征和能力,而且可以加入新的特性或者是修改已有的特性建立起类的新层次。
子类拥有父类的所有成员。同时子类也可以重写父类中的方法。
子类可以访问父类的public成员和protected成员,但是不能访问private成员。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端