C# 方法
方法
1. 方法的概念,意义,定义,调用,返回值
1. 关于:return
1) return : 结束当前方法的执行
2) 方法的返回值
如果方法的返回值定义时为void,那么在方法体的最后
一行,可以省略不写return 语句,一般,不会写。
如果方法的返回不是void,而是其它的类型,如:
int, float , int[] .....,这时应该在方法体的
最后一行加: return 语句,return 后面跟的内容
一定得是对应类型。可以是一个普通的值,也可以是
能够计算出对应类型值的表达式。
注:返回值类型常用:
int bool float double
数组 ,类类型
public void Print()
{
return ; //return默认省略
}
public int[] Insert()
{
return int[] ;
}
2.数组的作为方法值
-----------------------------------------------------
方法重载机制:
考虑:完成以下功能:实现多个数据相加
int , int ------ Add( int a, int b )
int ,float ------ JiaFa( int a, float b)
int ,int ,int------ Sum (int a, int b ,int c)
double,double------ JF( double a, double b )
.....
使用重载机制后,改为:
AddUtils.cs
一组方法,这组方法完成的是多个数据相加的操作
Add ( int a, int b )
Add ( int a, float b )
Add ( int a, int b , int c )
Add ( double a ,double b )
Test.cs
Add( 10 , 20 ); //Add( int a, int b )
Add( 1.0f,2.0f) ;
总结:
0. Overload 或 OverLoad 或 OverLoading
1. 方法重载是一种使用机制,在编码中解决
完成相同的功能,只是在完成功能时,需要的参数
个数或类型不一样,这时,使用方法重载了。
2.能够构成方法重载的条件:
1)必须是一个类的一组方法(方法至少2个)
2)这组方法的特点:
方法名完成相同,如:都叫 Add(....)
但是方法的形式参数个数或参数类型不相同。
这时,当调用时,编译器会根据给定的实际数据
进行自动匹配,找到最合适的方法去执行。
匹配时,会自动向上匹配。
如:Add(int a, float b) 第一个方法
Add(double a, float b) 第二个方法
Add( 1.1f , 1.1f )
会自动 匹配第二个方法
3)方法重载与返回值没有任何关系。
练习:
写个工具类,用于完成多个数字相加的操作。
要求:工具类中定义方法时使用重载机制完成。
然后定义一个测试类,添加主方法,
调用工具类中的加法方法,测试不同的数字相加。
体会方法重载机制的具体使用和意义。
---------------------------------------------------------
OOP 面向对象编程 面向过程编程
1. 面向对象编程与面向过程编程区别
面向对象编程 :属于一种高级编程思想
语言 C# , Java , JS ......
面向对象是计算机解决问题的一种思想,
强调的是对象。有了具体对象后,然后再根据
相应需求来设计完成功能。
“大象放到冰箱”,
考虑对象有对象,再按照步骤 。
程序来源于生活,服务于生活。
面向过程编程:属于一种偏底层编程思想,解决的是
一些低层或者 比较小的问题。面向过程 强调“过程”
或“步骤”,先做什么,再做 什么,最后做什么...
语言 C语言
二者之间的关系:先从面向对象的角度考虑问题,
准备相应的对象,有了对象之后,再去按面向过程解决问题。
--------------------------------------------------------
1. 生活中的类和对象
类:模板,不存在一种东西。
对象:真真正正存在的实物。
1. 程序中的 类 和 对象
类:
是组成程序最基本单元。
class 来创建一个类
程序中的类也是一种模板,
是不存在的东西。
将来可以根据类这个模板,
来构建很多具体的真正存在的实物(对象)
这个模板就规范了这个类应该包含的特征和行为
对象:
1)是根据类这个模板产生的具体实物。
当然,符合这个模板的实物可以有多个
所以,我们程序中的对象也可以创建多个.
2)对象是真正存在的,
如何让对象存在?new 关键字来创建对象
即:使用new创建几次,就有几个对象
3)这些对象都会具备模板中所定义的规范,
4)对象被创建出来之后,是存在堆栈中。
4. 如何创建类和对象?
1)创建类的基本语法:
访问修饰符 class 类名
{
}
注:类名一般是具体的名词,命名使用Pascal命名法。
类定义时,应该使用一组大括号
可以在class前面添加访问修饰符。
public private protected internal ....
2) 对象的创建?
基本语法:
类名 变量名 = new 类名();
如:定义一个角色类
class Role
{
}
创建一个具体的角色对象,名字:role1
//
Role role1 = new Role ( );
Role role2 = new Role ( );
注:一般,类单独写在一个.cs文件中,
如果要根据类产生对象时,一般会选择创建一个新的类
在类中添加主方法,new关键字。
练习:模拟大象放到冰箱这件事情。
1. 创建模板(类,大象类,冰箱类,测试类Main())
1. 有对象( 大象,冰箱,人)
2. 按步骤(第一步,第二步,第三步....)
3.类中的字段和方法
为了更好的描述模板,通常需要在模板类中添加一些
特定的成员内容。成员包括两部分:
---字段:特征,有什么
---方法:行为,能做什么
注:字段和方法暂时使用 public 修饰。
如:
class GirlFriend
{
//字段--特征,有什么,----全局变量
public string name ;
public string sex ;
//方法--行为,能做什么
public void Study()
{
Cosnole.WriteLine("......");
}
}
4. 如何访问类中的字段和方法
当对象使用new关键字创建出来之后,每个
对象都会具备类中所定义好的一份内容(字段和方法)
而且每个字段都会有默认值。
但是,若想为对象的字段重新赋值,就需要:
1) 访问类中某些字段:
对象名 . 字段 ;
如: Console.WriteLine( e1.age );//e1大象的年龄
2) 为当前操作的对象的某些字段赋值
对象名.字段名 = 具体的值
如:为 e2 这头大象的身高赋值,身高为 160.
e2 .height = 160.0f ;
对象名.方法名();
总结:
1.方法的基本使用
2.方法的重载
3.类和对象
4.如何创建类,如何对象
5.如何访问类中的字段或方法
如何设置值
day08 作业 2018.01.11 周四
-------------------------------------------------------------
一、扩展题。(必做题)
程序来源于生活,服务于生活。
学习了C#中的面向对象,了解了如何创建类,如何创建对象,
又明白了如何为对象的字段赋值和访问值后,
请观察你身边的事物,或考虑你身边有没有符合类和对象场景的
实际例子。请使用代码的形式描述出来。
类型不限、内容不限。重点是体会类和对象的概念,深刻明白
类中的内容,对象是如何具备的。
二.代码补充题和选择题。(必做题)
1. 下面是关于冒泡排序的代码(将数组中的元素升序 排列),
中间缺少的部分代码是:
int[] array = { 12, 34, 6, 2, 4, 7, 90 };
for (int i = 0; i < array.Length - 1; i++)
{
____________
{
if (array[j] > array[j + 1])
{
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
2.在C#类中,可以通过编写(C D)实现方法重载。(多选题)
A.具有不同返回类型的同名函数(错,能否构成方法重载,跟返回值没有任何关系)
具有不同代码行数的同名函数(错,能否构成方法重载,跟方法中具体代码行数没有关系)
具有不同参数个数的同名函数
具有不同参数类型的同名函数
构成重载的条件:
(1) 多个方法名字相同
(2) 方法的参数个数或参数类型上不相同
(3) 能否构成重载,跟方法返回值没有任何关系
3.在C#中,类Test的代码如下所示,则选项 (A ) 中的方法声明是
对类Test.cs类中 Change() 方法的重载。
class Test
{
public void change(int m)
{
}
}
A.
public int Change(double m)
{
Console.WriteLine(“parameter is:” +m);
return 0;
}
(A.项中,方法名和给定的Change()方法的方法名相同,
不同的是,A.项中的Change()方法的参数类型和给定不一样,现在说明:方法名相同,参数类型不相同,可以构成重载)
B.
public int Change(int m)
{
Console.WriteLine(“one parameters”);
return 0;
}
(B项错误
方法的参数类型和给定的Change()一样,现在说明:方法名相同,参数类型相同,不可以构成重载)
C.
public void change (int m)
{
Console.WriteLine(“one parameters”);
}
(C项错误
方法的参数类型和给定的Change()不一样是change(),现在说明:方法名不相同,参数类型相同,不可以构成重载)
D.
public void change(int m,int n)
{
Console.WriteLine(“two parameters”);
}
(D项错误
方法的参数类型和给定的Change()不一样是change(),现在说明:方法名不相同,参数数量不相同(数量不同可以构成重载),不可以构成重载)
三、编码题。
1.考查:数组作为方法的参数(必做题)
创建一个方法:int GetMinValue( int[,] numbers ){}
该方法用于查找指定二维数组中的最大元素。
要求:调用并打印结果。
提示:二维数组中找出最大元素或最小元素,直接使用双重for
循环,在循环体依次中做判断(和一维数组一样的)
2.考查:类和对象基础(必做)
创建一个Book类,用于描述书的基本信息。
字段:编号-string, 书名--string,作者-string
价格-float , 页数--int
方法:读书(Read)
创建一个测试类,BookTest.cs,
在测试类中创建一本书,book1,
并通过“对象名.字段名”为book1的字段赋值:
010101,"Unity经典官方案例","Jack",59.9,450
赋值之后,打印两个对象各个字段的值。打印格式为:
书名=“”,作者=“”,价格=***
3.考查:类和对象基础(选做)
创建一个几何学中的“点”类,Point.cs
“点”类中包含的成员:
字段:x ,y 注:x和y是int类型的数字
方法:求两点之间距离的方法:float Distance( Point p )
创建一个测试类,在测试类中添加主方法,主方法中:
1)创建第一个点,名字为: p1,
然后为这个点的x和y两个字段赋值,值分别为:10和3
2)创建第二个点,名字为:p2,
然后为这个点的x和y两个字段赋值,值分别为:20和2
3)考虑:如何计算这两点之间的距离