类和对象
- 格式:doc
- 大小:141.00 KB
- 文档页数:14
什么是⾯向对象、对象是什么、什么是类、如何使⽤对象、类和对象的关系⾯向对象⼀、⾯向对象 概念:⾯向对象是⼀种编程思想,使⽤编程语⾔解决现实问题的⼀种思路。
分类: ⾯向过程: C 语⾔ ⾯向对象: Java ⾯向对象的思想: ⾯向对象的思想: ⾯向过程的思想:⾃顶向下 逐步执⾏。
---> 当解决⼀件事情的时候,⾸先想到的是我该怎么去做⾯向对象思想:以对象为中⼼,使⽤对象调⽤其功能。
---> 当解决⼀件事情的时候,⾸先想到的是我该让谁帮我做。
想到的谁 ---> 对象 对象:现实⽣活中存在的真实的事物都是对象,Java 中有⼀句名⾔: 万物皆对象,⼤到宇宙、⼩到夸克在Java 的世界中都可以看成对象。
提起对象,就需要提起另⼀个概念——类。
类是对象的模板,对象是类的实例。
⼆、类 概念: 将具有相同特征的⼀类事物的共性进⾏抽取(抽取的过程叫做抽象),形成的⼀个概念叫做类。
类的抽象: 1. 怎么去描述⼀个事物,从哪些维度进⾏描述? 这个事物具有什么 ---> 属性 这个事物会做什么 ---> ⾏为 2. 怎么去描述⼀类事物的共性? 这些事物具有什么 ---> 属性 这些事物会做什么 ---> ⾏为 类和对象的关系: 类是对象的模板 对象是类的实例 类的定义: 概述: 属性 : 使⽤成员变量来进⾏描述 ⾏为 : 使⽤成员⽅法进⾏描述 语法:关键词:class语法:public class 类名{} 成员变量 定义位置:类中⽅法外 语法: 数据类型 变量名; / 数据类型 变量名 = 初始值;作⽤域:⾄少在本类 默认值: 和数组元素的默认值是⼀样的 基本数据类型 整数类型 0 ⼩数类型 0.0 字符类型空字符 布尔类型 false 引⽤数据类型 null 定义的注意事项 1. 在同⼀个类中不能定义两个同名的成员变量 2. 在同⼀个类中成员变量可以和局部变量可以重名,但是在访问的时候,局部变量优先。
怎样使用类和对象使用类和对象是面向对象编程的核心概念之一、类是一种抽象的数据类型,它定义了一类对象的共同属性和方法。
而对象则是类的具体实例,通过实例化一个类,我们可以创建出多个对象。
使用类和对象能够有效地组织和管理代码,提高代码的可读性和可维护性。
下面我们将从定义类和对象、实例化对象、访问属性和方法、类的继承以及类之间的关系等方面来详细介绍如何使用类和对象。
一、定义类和对象在Python中,我们可以使用关键字class来定义一个类,类的命名通常采用首字母大写的驼峰命名法。
类内可以定义属性和方法,属性是类的状态信息,而方法则是类的行为。
例如,我们定义一个名为Person的类,其中包含一个属性name和一个方法greeting:```class Person:def __init__(self, name): = namedef greeting(self):print("Hello, my name is", )```上述代码中,__init__方法是一个特殊的方法,它用来初始化类的实例。
self参数代表类的实例本身,通过self我们可以访问类的属性和方法。
二、实例化对象在定义了一个类之后,我们可以通过调用类来实例化一个对象。
在Python中,对象的实例化操作非常简单,只需要使用类名后跟上一对括号即可。
例如,我们实例化一个名为Tom的Person对象,并调用其greeting方法:```tom = Person("Tom")tom.greeting```代码执行结果为:Hello, my name is Tom三、访问属性和方法访问类的属性和方法通过使用点运算符(.)来实现。
在Python中,类的属性和方法的访问和调用方式是一样的,都是通过对象名后面跟上一对括号来实现。
例如,我们使用前面定义的Person类,实例化一个名为Tom的对象,并访问其name属性和调用greeting方法:```tom = Person("Tom")print()tom.greeting```代码执行结果为:TomHello, my name is Tom四、类的继承在面向对象编程中,继承使得一个类可以继承另一个类的属性和方法,从而得到更多的功能。
Java 类与对象选择题练习附加答案解析1. 以下关于Java类的描述,正确的是:A. 类是对象的实例。
B. 类可以包含属性和方法。
C. 类不能继承其他类。
D. 类只能包含一个方法。
答案: B。
解析:类是对象的蓝图或模板,可以包含属性(成员变量)和方法(成员函数)。
2. 在Java中,要创建一个类的对象,应使用哪个关键字?A. newB. createC. instantiateD. make答案: A。
解析:在Java中,使用`new`关键字来创建类的对象。
3. 在以下关于构造方法的描述中,正确的是:A. 构造方法必须有返回类型。
B. 构造方法的名称必须与类名相同。
C. 构造方法可以是静态的。
D. 构造方法可以重载但不能覆盖。
答案: B。
解析:构造方法的名称必须与类名相同,并且没有返回类型(包括void)。
构造方法可以重载(多个同名但参数不同的方法),但不能覆盖(重写父类方法)。
4. 如果`MyClass`类有一个名为`display`的方法,且`myObject`是`MyClass`类的一个实例,如何调用该方法?A. display();B. MyClass.display();C. myObject.display();D. MyClass::display();答案: C。
解析:通过对象实例`myObject`来调用类的非静态方法`display`。
5. 以下哪个选项是关于`this`关键字的正确描述?A. `this`关键字指向类的超类(父类)。
B. `this`关键字只能在静态方法中使用。
C. `this`关键字引用当前对象的实例。
D. `this`关键字用于创建新的对象。
答案: C。
解析:`this`关键字引用当前对象的实例,可以在类的方法和构造方法中使用来引用当前对象的成员变量或方法。
6. 在Java中,如果类B继承自类A,且类A是基类,则下列哪个选项是正确的?A. 类B是类A的超类。
本文来自CSDN博客/THISISPAN1.描述一下对象和类之间的关系?:类是对象的模板,类定义了对象具有什么样的数据和函数。
对象是类的一个实例,可以创建一个类的多个对象。
2.如何声明一个类,如何声明并创建一个对象?声明类:class Circle{}声明对象:Circle circle1;无实参函数声明一个对象Circ了circle(5);带实参函数声明一个对象3.构造函数和一般函数的区别:1)构造函数名字必须与类名相同2)构造函数没有返回值类型--连void都没有3)在创建对象时,构造函数被调用,其作用是初始化对象4.如何使用无实参函数声明对象?如何使用有实参函数声明对象?无实参函数声明对象:Circle circle1;带实参函数声明对象:Circle circle2(5);5.声明一个对象后,可以对对象重新赋值么?即使其引用另外一个对象么?:不可以。
对象名和数组名一样,一旦声明一个对象,他就表示一个特定的对象,不能对其重新赋值。
6.类的命名方法?对象的命名方法?自定义的类与函数库中的类有何区别?:类名第一个字母必须大写。
对象名全都是小写。
库中的类名都是小写形式,这就易于区分两种不同的类。
7.对象间的复制指的是什么?:与普通变量类似,也可以用=号进行对象之间的复制。
源对象的每个数据域会被复制到目的对象的数据域。
如:circle1 = clrcle2 //会将circle2中的radius复制到circle2中的radius。
对象间的复制完毕后,两个对象依旧是两个不同的对象,但具有相同的数据域。
8.如果一个对象只使用一次,无需为对象命名,即匿名对象,声明匿名对象的方法是:circle().getArea()//无实参函数声明的对象circle(5.0).getArea()//有实参的函数声明的对象9.类声明和实现分离的方法:1)创建一个类声明的头文件。
class Circle(){public:Circle();Circle(double);doublegetArea();};2)创建一个类实现的源文件。
类与对象课程设计一、教学目标本课程的教学目标是使学生掌握类与对象的基本概念,理解面向对象编程的基本原理和方法,能够运用类与对象的知识解决实际编程问题。
1.理解类和对象的概念及其关系。
2.掌握如何定义类和创建对象。
3.掌握类成员变量、成员方法和构造方法的定义和应用。
4.理解继承、多态和封装的原理及应用。
5.能够使用面向对象编程的思想编写程序。
6.能够运用类和对象的知识进行程序设计和调试。
7.能够运用继承、多态和封装等面向对象编程技术解决实际问题。
情感态度价值观目标:1.培养学生的编程兴趣,提高学生对计算机科学的热爱。
2.培养学生团队合作精神,提高学生沟通交流能力。
3.培养学生解决问题的能力,提高学生创新思维。
二、教学内容本课程的教学内容主要包括类与对象的基本概念、面向对象编程原理、类与对象的应用以及面向对象编程技术的实践。
1.类与对象的基本概念:介绍类和对象的概念、特点及其关系。
2.面向对象编程原理:讲解继承、多态和封装的原理及应用。
3.类与对象的应用:讲解如何使用类和对象解决实际编程问题。
4.面向对象编程技术的实践:通过案例分析和编程实验,使学生掌握面向对象编程的方法和技巧。
三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法。
1.讲授法:用于讲解类与对象的基本概念、原理和应用。
2.讨论法:用于探讨面向对象编程的技巧和方法,提高学生思考和分析问题的能力。
3.案例分析法:通过分析实际案例,使学生更好地理解类与对象的知识。
4.实验法:通过编程实验,让学生动手实践,巩固所学知识。
四、教学资源本课程所需教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用权威、实用的教材,为学生提供系统的学习资料。
2.参考书:提供丰富的参考资料,帮助学生拓展知识面。
3.多媒体资料:制作精美的PPT、教学视频等,提高课堂教学效果。
4.实验设备:保证学生能够进行编程实验,提高实践能力。
五、教学评估本课程的评估方式包括平时表现、作业、考试等,旨在全面、客观、公正地评价学生的学习成果。
java类与对象实验报告心得哇,做完这个Java类与对象的实验,真的是感触颇多呢。
在做这个实验之前呀,对于Java里的类和对象,我就只停留在理论知识上,觉得它们好抽象哦。
什么是类呢?就像是一个蓝图一样,描述了对象应该具有的属性和行为。
可那时候,我对这个概念也只是一知半解啦。
当开始做实验的时候,我才真正体会到其中的乐趣与挑战。
创建类的时候,我要去仔细思考这个类到底需要哪些属性。
就好比我要创建一个表示学生的类,那姓名、年龄、学号这些属性肯定是必不可少的呀。
这就像是在设计一个学生的模板一样,好有趣呢。
定义类中的方法也很有意思。
这些方法就像是这个类的功能一样。
比如说学生类中的学习方法,我可以在这个方法里编写一些代码来表示学生学习的过程。
刚开始写的时候,还老是出错呢,哎呀。
不是语法错误,就是逻辑上有点混乱。
不过这也是学习的过程嘛。
创建对象就像是根据这个蓝图来制造一个具体的东西。
我根据学生类创建了具体的学生对象,每个学生对象都有自己独特的属性值。
这就像是在现实生活中,每个学生都是独一无二的一样。
当我成功创建出这些对象并且让它们执行相应的方法时,那种成就感真的难以言表,哈哈。
在实验过程中,我还深刻体会到了封装的重要性。
把类的属性和方法封装起来,就像是给它们穿上了一层保护罩一样。
这样可以防止外部的代码随意修改类内部的数据,使得代码更加安全和可靠。
这让我觉得Java真的是一门很严谨的编程语言呢。
另外呀,类与类之间的关系也很复杂但又很有趣。
有继承关系,就像儿子类继承父亲类的属性和方法一样。
还有组合关系,一个类可以包含其他类的对象作为自己的属性。
理解这些关系的时候,我费了好大的劲呢,不过一旦理解了,就感觉像是打开了新世界的大门。
这次实验让我对Java类与对象的理解不再停留在书本上的文字,而是真正地可以运用它们来编写程序了。
我觉得自己在编程的道路上又前进了一大步呢。
希望以后还能做更多这样有趣又有挑战性的实验,让我可以更加熟练地掌握Java编程呀。
c语言类和对象的定义C语言中的类和对象定义在C语言中,类和对象是用来组织和管理代码的重要工具。
虽然C 语言并没有像C++或Java一样提供内置的类和对象机制,但我们仍然可以通过一些技巧来实现类似的功能。
1. 什么是类和对象?类是一种用户自定义的数据类型,它可以包含多个成员变量和成员函数。
对象是类的一个实例,通过创建对象可以使用类中定义的成员变量和成员函数。
2. 如何定义类?在C语言中,我们可以使用结构体来定义类。
结构体是一种可以存储不同类型的数据的数据类型,它可以包含多个成员变量。
例如,我们可以定义一个表示学生的类:```cstruct Student {char name[20];int age;float score;};```上述代码定义了一个名为Student的结构体,它包含了三个成员变量:name、age和score,分别表示学生的姓名、年龄和分数。
3. 如何创建对象?在C语言中,我们可以通过声明结构体变量来创建对象。
通过使用结构体变量名和点操作符,我们可以访问和修改对象的成员变量。
例如,我们可以创建一个名为stu的学生对象,并对其成员变量进行赋值:```cstruct Student stu;strcpy(, "Tom");stu.age = 18;stu.score = 90.5;```上述代码创建了一个名为stu的学生对象,并将其姓名设置为"Tom",年龄设置为18,分数设置为90.5。
4. 如何定义对象的行为?在C语言中,我们可以通过函数来定义对象的行为,这些函数可以操作对象的成员变量,实现一些特定的功能。
例如,我们可以定义一个函数来计算学生的平均分数:```cfloat calculateAverage(struct Student stu) {return stu.score / 3;}```上述代码定义了一个名为calculateAverage的函数,它接受一个学生对象作为参数,并返回该学生的平均分数。
Java类和对象的应用实验总结在Java编程语言中,类(Class)和对象(Object)是两个核心的概念。
类是对象的模板或蓝图,而对象则是类的实例。
通过使用类和对象,我们可以创建具有共享属性和方法的实体,也可以创建具有独特属性和行为的实体。
以下是我对Java类和对象应用实验的一些总结:类的定义和使用:在Java中,我们使用class关键字来定义一个类。
例如,我们可以创建一个名为Person的类,该类具有name、age 和height等属性,以及eat()和sleep()等方法。
我们可以通过创建类的实例(即对象)来使用类。
对象的创建和使用:我们使用new关键字来创建一个类的实例,这个实例就是一个对象。
例如,我们可以创建一个Person类的对象,并通过调用对象的方法来执行特定的行为。
我们也可以通过访问对象的属性来获取或修改对象的状态。
继承:Java中的类可以继承其他类的属性和方法。
通过继承,我们可以创建一个新的类,该类继承了父类的所有属性和方法,并可以添加自己的属性和方法。
这个过程被称为类的扩展或继承。
多态:在Java中,一个对象可以被引用为多种类型。
例如,我们可以有一个父类类型的引用指向一个子类对象。
当调用这个对象的方法时,会根据对象的实际类型来调用相应的方法。
这就是多态性的体现。
封装:封装是Java中一个重要的面向对象编程概念。
通过封装,我们可以将数据(属性)和处理数据的方法(方法)绑定在一起,形成一个独立的实体。
封装的目的是增加安全性和简化性,用户只知道对象提供哪些方法,至于内部的具体实现细节则一概不知。
通过这些实验,我深入理解了Java的类和对象的概念,以及它们在面向对象编程中的重要性。
这些实验也帮助我理解了如何使用类和对象来设计和实现复杂的系统。
6.1实验目的和要求1.熟悉面向对象的基本概念。
2.进一步掌握类的各种成员的使用方法。
3.掌握对象之间通信的基本方法。
6.2实验内容与步骤题目1 点和直线类(1)创建C#控制台应用程序L6_1。
(2)在程序中新建一个点类CzPoint,为其定义两个double类型的私有字段成员x和y,分别表示点的横坐标和纵坐标。
(3)为CzPoint定义两个公有属性X、Y,分别用于封装对字段x 和y的读写访问。
(4)定义CzPoint的带参构造函数,在其中对字段x和y进行初始化。
参考源代码如下:public CzPoint(double x, double y){this.x = x;this.y = y;}(5)为CzPoint定义公有方法Move,用于按指定的水平距离和垂直距离移动坐标点。
参考源代码如下:public void Move(double dx, double dy){x += dx;y += dy;}(6)对CzPoint类进行相等和不相等操作符重载。
两个坐标点相等,是指它们的横坐标和纵坐标都相等。
(7)在程序主方法中创建坐标为(1,2)和(3,3)的两个坐标点对象,判断它们是否相等;而后将第一个坐标点移动到第二个坐标点上,再判断它们是否相等。
(8)在程序中再新建一个直线类CzLine,为其定义两个double类型的字段成员a和b,分别表示直线的斜率和截距;再定义字段的封装属性A和B,但它们都是只读的。
(9)为CzLine定义两个构造函数,一个根据斜率和截距来创建直线对象,另一个则根据两个CzPoint对象来构造直线对象(直线穿过这两个点)。
后一个的参考源代码如下:public CzLine(CzPoint p1, CzPoint p2){if (p1 == p2)throw new ArgumentException("两点不能相同");this.a = (p2.Y - p1.Y) / (p2.X - p1.X);this.b = p1.Y - this.a * p1.X;}(10)为CzLine定义公有方法Move,但它只用于平移直线,而不改变直线的斜率。
再为其定义公有方法Contains,用于判断某点是否在该直线上。
(11)类似的,为CzLine重载相等和不等操作符。
(12)最后在程序主方法中采用不同的方式创建直线对象,并编译运行程序,测试它们的使用效果。
程序的整体结构如下:个人编程:源代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace L6_1{class Program{static void Main(string[] args){CzPoint a = new CzPoint(1, 2);CzPoint b = new CzPoint(3, 3);if (a == b)Console.WriteLine("点(1,2)与点(3,3)相等.");elseConsole.WriteLine("点(1,2)与点(3,3)不等.");Console.WriteLine("将点(1,2)移动到点(3,3)");a.Move(3, 3);if (a == b)Console.WriteLine("点(1,2)移动后与点(3,3)相等.");elseConsole.WriteLine("点(1,2)移动后与点(3,3)不等.");CzLine L1 = new CzLine(2, 0);CzLine L2 = new CzLine(a, b);L1.Move(1);if (L1 == L2)Console.WriteLine("2条直线相等.");elseConsole.WriteLine("2条直线不等.");L1.Contains(a);Console.Read();}}public class CzPoint{private double x;private double y;public double X{get { return x; }set { x = value; }}public double Y{get { return y; }set { y = value; }}public CzPoint(double x, double y){this.x = x;this.y = y;}public void Move(double dx, double dy){x += dx;y += dy;}public static bool operator ==(CzPoint a, CzPoint b) {if (a.X == b.Y && a.Y == b.Y)return true;elsereturn false;}public static bool operator !=(CzPoint a, CzPoint b) {if (a.X != b.Y || a.Y != b.Y)return true;elsereturn false;}}public class CzLine{private double a;private double b;public double A{set { a = value; }}public double B{set { b = value; }}public CzLine(double a, double b){this.a = a;this.b = b;}public CzLine(CzPoint p1, CzPoint p2){if (p1 == p2)throw new ArgumentException("两点不能相同");this.a = (p2.Y - p1.Y) / (p2.X - p1.X);this.b = p1.Y - this.a * p1.X;}public void Move(double db){this.b -= this.a * db;}public void Contains(CzPoint p){if (p.Y == p.X * this.a + this.b)Console.WriteLine("点({0},{1})在这条直线上.", p.X, p.Y);elseConsole.WriteLine("点({0},{1})不在这条直线上.", p.X, p.Y);}public static bool operator ==(CzLine L1, CzLine L2){if (L1.a == L2.a && L1.b == L2.b)return true;elsereturn false;}public static bool operator !=(CzLine L1, CzLine L2){if (L1.a != L2.a || L1.b != L2.b)return true;elsereturn false;}}}运行结果:题目2 向量类(1)创建C#控制台应用程序L6_2。
(2)在程序中新建一个向量类CzVector,在其中定义一个double[]类型的私有字段_values,用于维护向量的各个元素值。
(3)为CzVector定义三个公有属性Length、Sum和Prod,分别用于返回向量的长度、向量所有元素的和以及向量所有元素的积。
(4)在CzVector中定义一个索引函数,用于获取或设置向量各个元素的值。
(5)为CzVector定义两个构造函数,一个根据指定长度来对向量进行初始化(向量各元素取默认值0),另一个由指定的数组来构造向量并设置各元素的值。
参考源代码如下:public CzVector(int length){_values = new double[length];}public CzVector(params double[] dArray){_values = dArray;}(6)利用操作符重载来实现向量加法、减法和乘法。
这三种运算均要求两个向量的长度相等。
设向量α=(a1, a2, …, a n), β=(b1, b2, …, b n),那么α+β=(a1+ b1, a2+ b2, …, a n+ b n),减法与之类似,而α*β= a1*b1+ a2* b2+ …+ a n* b n,λ*α=(λ*a1, λ*a2, …, λ*a n)。
以加法操作符重载为例,参考源代码如下:public static CzVector operator +(CzVector v1, CzVector v2){if (v1.Length != v2.Length)return null;CzVector result = new CzVector(v1.Length);for (int i = 0; i < v1.Length; i++)result[i] = v1[i] + v2[i];return result;}(7)类似的,利用操作符重载来判断两个向量是否相等。
向量相等的条件是:两个向量的长度相等,且各个位置上的对应元素值也相等。
(8)为CzVector定义一个ConsoleOutput方法,用于在控制台一行输出向量的所有元素,其之间以空格分割。
(9)在程序主方法中随机定义几个向量对象,并测试其运算结果。
参考源代码如下:static void Main(){CzVector v1 = new CzVector(1, -5, 9, 6);CzVector v2 = new CzVector(0, 1, 2, 3);Console.Write("v1 = ");v1.ConsoleOutput();Console.Write("v2 = ");v2.ConsoleOutput();CzVector v3 = v1 + v2;Console.Write("v1 + v2 = ");v3.ConsoleOutput();Console.Write("3 * (v1 + v2) = ");(v3 * 3).ConsoleOutput();Console.WriteLine("v1 * v2 = {0}", v1 * v2); }源代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace L6_2{class Program{static void Main(string[] args){CzVector v1 = new CzVector(1, -5, 9, 6);CzVector v2 = new CzVector(0, 1, 2, 3);Console.Write("v1 = ");v1.ConsoleOutput();Console.Write("v2 = ");v2.ConsoleOutput();CzVector v3 = v1 + v2;Console.Write("v1 + v2 = ");v3.ConsoleOutput();Console.Write("3 * (v1 + v2) = ");(v3 * 3).ConsoleOutput();Console.WriteLine("v1 * v2 = {0}", v1 * v2);Console.Read();}}public class CzVector{protected double[] _values;public double this[int index]{get{if (index < 0 || index >= Length)throw new ArgumentException("超出索引范围!");elsereturn this._values[index];}set{if (index < 0 || index >= Length)throw new ArgumentException("超出索引范围!");elsethis._values[index] = value;}}public int Length{get { return _values.Length; }}public double Sum{get{double result = _values[0];for (int i = 0; i < _values.Length; i++)result += _values[i];return result;}}public double Prod{get{double result = _values[0];for (int i = 0; i < _values.Length; i++)result *= _values[i];return result;}}public CzVector(int length){_values = new double[length];}public CzVector(params double[] dArray){_values = dArray;}public static CzVector operator +(CzVector v1, CzVector v2) {if (v1.Length != v2.Length)return null;CzVector result = new CzVector(v1.Length);for (int i = 0; i < v1.Length; i++)result[i] = v1[i] + v2[i];return result;}public static CzVector operator -(CzVector v1, CzVector v2) {if (v1.Length != v2.Length)return null;CzVector result = new CzVector(v1.Length);for (int i = 0; i < v1.Length; i++)result[i] = v1[i] - v2[i];return result;}public static double operator *(CzVector v1, CzVector v2) {if (v1.Length != v2.Length)return 0;double result = 0;for (int i = 0; i < v1.Length; i++)result += v1[i] * v2[i];return result;}public static CzVector operator *(CzVector v1, double v2){CzVector result = new CzVector(v1.Length);for (int i = 0; i < v1.Length; i++)result[i] = v1[i] * v2;return result;}public static bool operator ==(CzVector v1, CzVector v2){if (v1.Length == v2.Length){for (int i = 0; i < v1.Length; i++)if (v1[i] != v2[i])return false;return true;}elsereturn false;}public static bool operator !=(CzVector v1, CzVector v2){if (v1.Length == v2.Length){for (int i = 0; i < v1.Length; i++){if (v1[i] != v2[i])return true;}return false;}elsereturn true;}public void ConsoleOutput(){for (int i = 0; i < _values.Length; i++)Console.Write("{0} ",this._values[i]);Console.WriteLine();}}}运行结果:。