浅谈类和对象的概念

一、什么是类?什么是对象?

  学习一门面向对象编程语言,我们必须得知道什么是类?什么是对象?

  类(Class)实际上是对某种类型的对象定义变量和方法的原型。它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。

  简单地说,类是一种抽象的数据类型,是对一类对象的统一描述。在生活中,我们常常会把一组具有相同特性的事物归为一类,当然根据分类的标准不同,划分的类也是不相同的。汽车和人都是独立的类,它们都有各自的特点。汽车这个大类还可以分为卡车,公共汽车,和小轿车等各种小类。人可以分为男人和女人。将这些思想反映在编程技术中就产生了类的概念。

  类是对象概念在面向对象编程语言中的反映,是相同对象的集合。类描述了一系列在概念上有相同含义的对象,为这些对象统一定义了编程语言上的属性和方法。

  类是对某个对象的定义。它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。实际上它本身并不是对象,因为它不存在于内存中。当引用类的代码运行时,类的一个新的实例,即对象,就在内存中创建了。虽然只有一个类,但能从这个类在内存中创建多个相同类型的对象。

  可以把类看作“理论上”的对象,也就是说,它为对象提供蓝图,但在内存中并不存在。从这个蓝图可以创建任何数量的对象。从类创建的所有对象都有相同的成员:属性、方法和事件。但是,每个对象都象一个独立的实体一样动作。例如,一个对象的属性可以设置成与同类型的其他对象不同的值。

  类是C#中功能最为强大的数据类型。类定义了数据类型的数据和行为。

二、类和对象之间的关

  类是具有相同数据结构(属性)和相同操作功能(行为)对象的集合。对象就是符合某种类所产生的一个实例。对象与类的关系是:

  对象的共性抽象为类,类的实例化就是对象。

  类是一个抽象的概念,而对象是具体的,比如说车是一个类的话,张三的那辆奔驰车就是车这个类的一个实例,动物是一个类的话,李四的家养的那只猫就是动物类的一个对象实例。

  人类就是一个类,这个类包含了所有人的共同属性,像有四肢,有名字,会吃喝拉撒,会睡觉等等。而实例就是这个人类的具体实现,比如叫张三的这个人就是人类的一个实例,张三有着人类的所有属性。张三是人类的一个实例,同样李四也是人类的一个实例,但是张三和李四是不同的,因为他们是人类的两个不同的实例,比如:张三的名字是“张三”,性别是“男”,而李四的名字是“李四”,性别是“女",他们虽然都有姓名,都有性别,但是其具体表现不同。

  对象是类的一个实例,它具有确定的属性,如张三(人的实例)身高180,体重70公斤,大学本科,男,23岁,汉族。

  人类只有一个,人类的实例可以有无数个,当然包括你我他。

  对象可以被创建和销毁,但类是无所不在的(因为类是面向对象编程的基本组成单位)。

  初学者往往混淆类和对象的关系,实际上它们之间是蓝图和产品的关系。类就是一张蓝图,它规定对象具有哪些特征。而对象就是根据这张蓝图生产出来的产品。同一个类产生的对象也是这样,它们具有同样的结构,却可能在某些特性上有不同之处。

  例如,桌子是一个类, 人们不断打造各种尺寸和风格(属性)的桌子(桌子的实例),打造桌子, 又不断毁坏桌子,年复一年,旧的去了,新的又来,但桌子的概念没变,它是一个抽象的概念。应该称它为桌子类,以区别于打造的具体桌子。

 

C#核心基础--浅谈类和对象的概念的更多相关文章

  1. c#核心基础 - 浅谈 c# 中的特性 Attribute)

    特性(Attribute)是用于在运行时传递程序中各种元素(比如类.方法.结构.枚举.组件等)的行为信息的声明性标签.可以通过使用特性向程序添加声明性信息.一个声明性标签是通过放置在它所应用的元素前面 ...

  2. 浅谈Java回收对象的标记和对象的二次标记过程_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 一.对象的标记 1.什么是标记?怎么标记? 第一个问题相信大家都知道,标记就是对一些已死的对象打上记号,方便垃圾收集器的 ...

  3. HTTP协议漫谈 C#实现图(Graph) C#实现二叉查找树 浅谈进程同步和互斥的概念 C#实现平衡多路查找树(B树)

    HTTP协议漫谈   简介 园子里已经有不少介绍HTTP的的好文章.对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将HTTP协议的元素进行分类讲 ...

  4. Java类和对象的概念

    Java是一门面向对象的编程语言,理解Java,首先要理解类与对象这两个概念. Java中的类可以看做C语言中结构体的升级版.结构体是一种构造数据类型,可以包含不同的成员(变量),每个成员的数据类型可 ...

  5. 人生苦短_我用Python_类与对象的概念_006

    Python类与对象的概念类和对象--->万事万物都对象物以类聚.人以群分 --->?划分标准性别分 男女 中性成绩分 优秀 良好 不及格 类->根据类的属性来划分类的实例-> ...

  6. 【推荐】JAVA基础◆浅谈3DES加密解密

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  7. [java核心外篇]__Object类与对象类型的转型

    前言 我们在之前的学习中提过很多次了,java是面向对象的,java的基础可以说是建立在类和对象上面的.然后我们又学到了类的继承,发现了在java类库中,类的继承是极为普遍的,一个类继承另一个类,就像 ...

  8. Java基础 之二 类和对象

    1.基础概念 1) 概念 简单来说,类是具有相同特征事物的抽象,比如有轮子的都可以抽象为车:对象则可以看做类的具体实例,比如创建一个法拉利的车,就是车这个类的实例. 抽象.封装.继承.多态是类的四个特 ...

  9. C/C++基础知识总结——类与对象

    1. 面向对象程序设计的特点 1.1 抽象 1.2 封装 1.3 继承 1.4 多态 (1) 分为:强制多态.重载多态.类型参数化多态.包含多态 (2) 强制多态:类型转换 重载多态: 类型参数化多态 ...

随机推荐

  1. MFC控件编程之复选框单选框分组框

    MFC控件编程之复选框单选框分组框 一丶分组框 分组框 英文叫做 GroubBox 添加了分组框主要就是分组.好看.不重点介绍 二丶单选框 英文: Raido Button 单选框需要注意的事项 1. ...

  2. spring-boot (四) springboot+mybatis多数据源最简解决方案

    学习文章来自:http://www.ityouknow.com/spring-boot.html 配置文件 pom包就不贴了比较简单该依赖的就依赖,主要是数据库这边的配置: mybatis.confi ...

  3. mysql年初至今聚合

    年初至今聚合和滑动聚合类似,不同的地方仅在于统计的仅为当前一年的聚合.唯一的区别体现在下限的开始位置上.在年初至今的问题中,下限为该年的第一天,而滑动聚合的下限为N个月的第一天.因此,年初至今的问题的 ...

  4. Spring Boot (四)模板引擎Thymeleaf集成

    一.Thymeleaf介绍 Thymeleaf是一种Java XML / XHTML / HTML5模板引擎,可以在Web和非Web环境中使用.它更适合在基于MVC的Web应用程序的视图层提供XHTM ...

  5. Python中编码和字符串

    编码和字符串 编码 在学习回顾中总结一下ASCII编码.Unicode编码和utf-8编码. 计算机中只能处理数字,我们若要处理文本的话就要将文件转换为数字.所以,这就涉及该怎样转换的问题,也就是编码 ...

  6. python模块导入细节

    python模块导入细节 官方手册:https://docs.python.org/3/tutorial/modules.html 可执行文件和模块 python源代码文件按照功能可以分为两种类型: ...

  7. Python with/as和contextlib上下文管理使用说明

    with/as 使用open打开过文件的对with/as都已经非常熟悉,其实with/as是对try/finally的一种替代方案. 当某个对象支持一种称为"环境管理协议"的协议时 ...

  8. 翻译:非递归CTE(已提交到MariaDB官方手册)

    本文为mariadb官方手册:非递归CTE的译文. 原文:https://mariadb.com/kb/en/library/non-recursive-common-table-expression ...

  9. 翻译:insert select(已提交到MariaDB官方手册)

    本文为mariadb官方手册:insert select的译文. 原文:https://mariadb.com/kb/en/insert-select/ 我提交到MariaDB官方手册的译文:http ...

  10. 伪指令 ADR 与 LDR 的区别

    指令简介: adr r0, _start 得到的是 _start 的当前执行位置,由 pc+offset 决定 ldr r0, =_start 得到的是绝对的地址,链接时决定 程序示例: ldr r0 ...