第1章 类和对象——定义类和创建对象

1.1     定义类、创建对象

在编程时,要定义类,然后在创建这个类的对象(实例)。

1.1.1 定义类

定义类的语法个式如下:

访问修饰符 Class 类名

{

    类的成员1;

    ................

    类的成员n;      

}

各项的含义如下。

1)  “访问修饰符”用来限制类的作用范围或访问级别,类的修饰符只有public和internal两种(嵌套类除外)。其中,声明为public的类可以被任何其他类访问;声明为internal的类智只能从同一个程序集的其他类中访问,即只有当前项目中的代码才能访问。若省略访问修饰符,则默认为internal。

2)   “类名”的命名与变量命名规则相同,类名使用Pascal命名规范。类名使用能够反映类功能的名词或名词短语。单独定义的类文件名要能够反映类的内容,最好是与类同名。

1.1.2 类的成员

在类的定义汇中,类的成员包含字段成员、方法成员等。字段成员用于描述状态,方法成员用于描述操作。

1.字段

类的成员变量又称为字段成员,字段成员也称成员变量,格式如下。

访问修饰符数据类型字段名=初值;

1)如果不希望其他类访问该成员,则在定义该类的成员时,“访问修饰符”使用protected或private;如果希望其他类访问该成员,则在定义该类的成员下,用public访问符,例如:

public string  name; //姓名

2)“字段名”使用camel命名规范来命名,使用名词定义字段名称。

3)“初值”表示该字段的初始状态,例如:

public  int age=18;//年龄,整型,初值18岁

2. 方法成员

在类的定义汇总,类的方法成员在C#中称为方法,在其他程序语言中称为函数,格式如下。

访问修饰符 返回值类型  方法名(形参列表)

{

      方法体;

       [return 表达式;]

}

1)这里介绍的方法成员,其“访问修饰符”不能是私有的private或受保护的protected,要声明为public,才能在,才能在其他类中访问到。

2)“返回值类型”可以是string、int等基本数据类型,也可以是类类型。如果盖方法不返回值,则使用void关键字。

采用以下形式声明一个无参数的、不返回值的方法:

public void  SampleMethod()

{

      方法体;

}

方法执行完毕后可以不返回任何值,也可以返回一个值。如果方法有返回值,那么方法体重必须要有return语句,且return语句必须指定一个与方法声明中的返回类型一致的表达式;如果方法不返回任何值,则返回类型为void。方法体内可以有return语句,也可以没有return语句,return语句的作用是立即退出方法执行。

3)“方法名”使用Pascal命名规范,应使用动词或动词短语。在一个类中,访问修饰符或功能相同的方法应该放在一起。

4)“形参列表”是包括类型名和名称的列表,类型可以是简单数据类型,也可以是类类型。

形参列表可以没有,也可以多个。即使不带参数也要在方法名加一对圆括号。形参列表的形式如下。

类型1形参1,类型2形参2,…

方法成员中的“形参列表”是形参参数表(简称形参parameter),是在定义方法的时候使用的参数,目的用来接收调用该方法时传入的参数。形参的本质是一个名字,不占用内存空间。

5)“方法体”就是方法中的0个或多个语句。

 【1-1】 使用面向对象的思想描述并抽象出学生类。

功能描述:常用的学生信息有姓名、性别、年龄、班级等基本信息,学习完一门课程后需要参加考试,只有考试通过后才能进入下一门课的学习。请根据描述,从对象抽象出学生类。要求定义学生类,并在主方法中实例化学生对象。

思路分析如下。

1)分析问题:学生学习课程。

2)提炼对象:学生。

3)分析对象的状态:姓名、性别、年龄、班级等。

4)分析对象的操作:学习、考试等。

5)定义类:学生类Student。

状态:

姓名name

性别gender

年龄age

班级grade

操作:

显示学习的课程Study(course),course是显示的课程名称

显示考试的课程Exam(course,score),course课程,score成

课堂练习1-2】请使用面向对象的思想描述并抽象出“台湾烧仙草奶茶连锁店”的类。

功能描述:不同的“台湾烧仙草奶茶连锁店”具有相同的环境、奶茶品种、价格、服务等,显示某编号奶茶店的信息。

【例1-2】  使用面向对象的思想描述长方体类。

功能描述:长方体有3条棱,分别叫作长方体的长,宽,高。用这3条棱既能描述一个长方体,也可以计算长方体的体积、表面积。

思路分析如下。

1)  分析问题:用长方体的3条棱就能描述一个长方体,计算长方体的体积、表面积。

2)  提炼对象:长方体。

3)  分析对象的状态:长,宽,高。

4)  分析对象的操作:计算长方体的体积、表面积。

5)  定义类:长方体类Cuboid。

状态:

长length

宽width

高height

操作:

计算长方体的体积Cubage,长方体的体积=长×宽×高计算长方体的表面积TotalArea,长方体的表面积=(长×宽+长×高+宽×高)×2

1.1.2 成员变量

成员变量是在类中定义的变量,字段、属性都能够叫作成员变量。定义在方法中的变量称为局部变量。

1.成员变量与this关键字

如果局部变量的名字与成员变量的名字相同,要想再该方法中使用成员变量,必须使用this关键字。在C#中,this关键字有多种用法,这里介绍在类定义中的用法,this用于区分成员变量和局部(本地)变量(或参数)。This关键字就是表示类中定义的成员名

【例1-3】定义一个名为Person的类,类中包括字段:name(姓名)、gender(性别)、age(性别),包括方法:Study()、Work()。代码如下。

上面Study()、Work()方法中的this.name表示成员名,name、age表示形式参数或局部(本地)变量。在方法中,通过this可以语义上区分成员名、参数名(或局部变量)。

注意:在实际编程中是不建议参数名与字段名相同的,这样做降低了代码的易读性,这里只是为了说明this关键字的用法而已。

2. 成员变量与局部变量的区别

1)  成员变量

1. 成员变量定义在类中,在整个类中都可以访问

2. 成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。

3.  成员变量有默认初始化值

2)   局部变量

1. 局部变量只定义在局部氛围内,如方法(函数)内、语句内等,只在所属区域有效。

2. 局部变量存在于栈内存中,作用范围结束后,变量空间会自动释放。

3.  局部变量没有默认初始化值。

4.  在使用变量是需要遵循的原则:就近原则。首先在局部范围找,有就使用,接着在成员位置找。

3)    成员变量与局部变量的区别

1. 在类中的位置不同

成员变量:在类中方法外面

局部变量:在方法或者代码块中,或者方法的声明上(即在参数列表中)

2. 在内存中的位置不同

成员变量:在堆中(方法区中的静态区)。

局部变量:在栈中。

3. 生命周期不同

成员变量:随着对象的创建而存在,随着对象的消失而消失

局部变量:随着方法的调用或者代码块的执行而存在,随着方法的调用完毕或者代码块的执行完毕而消失。

4. 初始值不同

成员变量:有默认初始值

局部变量:没有默认初始值,使用之前需要赋值,否则编译器会报错(The localvariable xxx may not have been initialized)。

1.3 创建对象

类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员方法。

1.3.1 对象的声明与实例化

对于已经定义的类,就可以用它作为数据类型来创建类的对象,简称对象。创建类的对象分为以下两个步骤。

1.声明对象引用变量

类名 对象名;

1)  “类名”是已经定义的类名称。

2)  “对象名”使用camel命名规范来命名,使用名词命名对象名称

例如,声明一个Student类型的对象stu,代码如下。

Student stu ; //声明Student类的类型对象stu,但未实例化

上面代码,只声明了Student类型的变量,并没有对类中的成员赋值,即未实例化,类成员没有实例化将不能访问

2.创建类的实例

创建类的实例也称实例化一个类的对象,简称创建对象。可以对已声明的对象进行实例化(也称初始化),实例化对象需要使用运算符new。其语法格式如下。

对象名=new 类名(参数列表);

参数列表”是可选的,根据类的构造函数来确定。“参数列表”将在构造函数中介绍。

例如,下面代码创建Student类的实例,并赋给stu对象,对stu对象进行初始化,

Stu=new student();//创建Student类的实例,并把引用地址赋给stu

通常是把上面声明对象与实例化对象的两个语句合在一起,其语法格式如下。

类名 对象名=new 类名(参数列表);

例如,把上面两汉代码写在一起,代码如下。

Student stu=new Student(); //声明Student类型的对象,并初始化stu对象

使用类声明的对象,实质上是一个引用类型变量,使用运算符new 和构造函数来实例化对象并获取内存空间。

注意:有关类的实例(对象)的声明与创建不能放在该类的内部,只能在外部(即其他类中),通常写在class Program类的Main()方法中。

1.1.3  对象成员的访问

类或对象成员的访问,可分为在本类内使用该成员、实例成员的访问和实例方法的访问3种方式。

 1.  在本类内使用成员

如果在本类内使用成员,类名可以省略,用this表示本类内的成员。格式如下。

this.成员

this.成员

2.  实例成员的访问

如果在其他类中访问实例成员,格式如下。

对象名.成员名

说明:“.”是一个运算符,其功能是访问指定类型或命名空间的成员。

例如,下面代码为对象的成员赋值:

stu.gender=”女”; //为stu对象的gender成员赋值

3.  实例方法的访问

实例方法的使用格式如下。

对象名.方法名(实参列表);

在调用方法时,实际参数(简称实参argument)将赋值给形参。因而,必须注意实参的个数、类型,应与形参一一对象,并且必须要有确定的值。实参的本质是一个变量,并且占用内存空间。只有在程序执行过程中调用了方法,形参才有可能得到具体的值,并参与运算求得方法值。实参列表的形式如下。

实参1,实参2,…

使用带有返回值的方法使用时,调用实例方法的格式一般采用:

变量名=对象名.方法名(实参1,实参2,…….);

 

如果不需要使用方法的返回值,则采用如下调用格式:

对象名.方法名(实参1,实参2,……);

例如,下面代码:

stu.Study(“英语”); //访问stu对象的study()方法,实参是“英语”

【例1-4】在【例1-1】定义类的基础上,在Program类的Main()方法中编写如下代码。

【课堂练习1-5】请在【课堂练习1-2】定义类的基础上编写代码,在主程序中编写创建对象,给字段赋值,调用方法的代码。

【例1-6】在【例1-2】定义类的基础上,在Program类的Main()方法中编写如下代码。

原文地址:https://www.cnblogs.com/qy1234/p/12364401.html

时间: 2024-10-08 04:42:32

第1章 类和对象——定义类和创建对象的相关文章

javascript学习笔记---ECMAScriptECMAScript 对象----定义类或对象

使用预定义对象只是面向对象语言的能力的一部分,它真正强大之处在于能够创建自己专用的类和对象. ECMAScript 拥有很多创建对象或类的方法. 原始的方式 因为对象的属性可以在对象创建后动态定义(后绑定),类似下面的代码: var oCar = new Object; oCar.color = "blue"; oCar.doors = 4; oCar.mpg = 25; oCar.showColor = function() { alert(this.color); };不过这里有一

使用prototype 对象定义类成员

使用prototype 对象定义类成员上一节介绍了类的实现机制以及构造函数的实现,现在介绍另一种为类添加成员的机制:prototype 对象.当new 一个function 时,该对象的成员将自动赋给所创建的对象,例如:<script language="JavaScript" type="text/javascript"><!--//定义一个只有一个属性prop的类function class1(){this.prop=1;}//使用函数的pro

类的对象和类的指针

类的对象和类的指针的区别zz 如下程序: #include <iostream> #include <string> using namespace std; class Student {     public:     static int number;     string name; public:     Student() { } void set(string str)     {        name = str;         number++; // 调用

类和对象:类与对象定义

在自己学习PHP的过程中,从零基础开始:从第一本书的看不懂,到第二本书的有印象了,再到第三本书的操作简单语句……记不清到底看过多少本了.可 是在应用时,每次到了一些关键知识点和核心技术,对其定义和用法会有模糊的感觉,因此特意把觉得比较重要的知识点写成网络笔记,这样便于经常翻来温习. 面向过程定义: “面向过程”是一种以事件为中心的编程思想,就是分析出解决问题所需要的步骤,然后用函数把这些步骤逐步实现,使用时将逐一调用就可以了. 面向过程编程方式重点围绕在数据的使用上,在程序设计过程中通过流程图的

Lesson 04:类和对象,类的成员变量、成员方法、构造方法

1 类(class) java是面向对象程序设计(OPP),类是构造对象的模板或者蓝图.由类构造(construst)对象的过程称为创建类的实例(instance).类的构成: 1 package 包名 2 class 类名 extends 父类名 implements 接口名{ 3 成员变量: 4 构造方法: 5 成员方法: 6 } 7 //一个简化的类的结构 成员变量 成员方法:包含返回值类型.参数列表.方法主体等要素 (1)方法的声明: 1 //方法的声明没有函数体 2 public in

python的类和对象(类的静态字段)

转自:http://www.cnblogs.com/Eva-J/p/5044411.html 什么是静态字段 在开始之前,先上图,解释一下什么是类的静态字段(我有的时候会叫它类的静态变量,总之说的都是它.后面大多数情况可能会简称为类变量.): 我们看上面的例子,这里的money就是静态字段,首先看它的位置,是在father类中,而不是在__init__中.那么一个小小的静态字段,我为什么要特意写一篇番外给它呢?耐着性子看下去,你就会发现一个小小的类变量,却折射出了整个类的世界. 首先我们先来解释

P4 类、对象、类成员简介

本节内容 类(class)是显示世界事物的模型. 现实中的一架飞机========================>>>抽象为程序世界中的类 类与对象的关系 对象也叫做实例,是类经过实例化得到的内存中的事宜 有些类不能被实例化,如数学,我们不能说一个数学 依照类,我们可以创建对象>>>这就是实例化 现实世界中常称对象,程序世界中常称实例,二者并无太大区别,常常混用,不用太纠结. 使用new操作符创建对象 △14:15开始编写程序>>>接下来我们自己动手

Python 之面向对象:类和对象调用类中的变量和方法

面向对象的核心是对象,用对象来操控类里面的方法和变量,加上类还具有继承.封装.多态三大特性,提高了代码的复用性和规范性. 一.对象 调用类中的变量和方法 二 .类  调用类中的变量和方法 原文地址:https://www.cnblogs.com/tianpin/p/11283032.html

C#002类,对象,类成员简介

本节内容 1.类(class)是现实世界事物的模型 2.类与对象的关系,什么时候叫“对象”什么时候叫“实例” 3.引用变量与实例的关系 4.类的三大成员: ①属性(Property): ②方法(Method): ③事件(Event) 5.类的静态成员与实例成员 ①关于“绑定”(Binding) 1.类(class)是现实世界事物的模型 类是对现实世界事物进行抽象所得到的结果类包括“物质”(实体)与“运动”(逻辑)建模是一个去伪存真.由表及里的过程 2.类与对象的关系 ①对象也叫实例,是类经过“实