介绍:一、类的成员;二、类和对象的关系;三、类和对象的使用;四、封装的好处;五、在类中使用方法:六、方法的重载:
七、静态方法和实例方法的区别:八、使用构造函数创建对象:
一、类的成员
1、类的属性:对象所拥有的特征,在类中表示时称为类的属性。
2、类的方法:对象执行的操作称为类的方法。
二、类和对象的关系
类定义了一组概念的模型,而对象是真实的实体。1、由对象归纳为类,是归纳对象共性的过程。
2、在类的基础上,将状态和行为实体化为对象的过程称为实例化。
三、类和对象的使用
1、将类实例化为对象 2、访问对象的属性或者方法
a、属性是控制对数据字段的访问、封装字段的安全性和正确性。
b、字段是存储数据的用。
c、方法是实现功能和操作。
注意:对象成员称为实例成员(对象名调用);而类成员称为静态成员(类名调用),static属于类所有。
一般说凡是用字段存储属性的地方都要添加属性。
定义一个类不写访问修饰符,则默认是internal访问类型。
string表现为值类型的特征,前后的值不变;如果是对象名来调用则要改变原来的值。
定义一个属性时,类型必须与它所访问的字段类型一致。
四、封装的好处:1.避免使用非法数据赋值
2.保证数据的完整性
3.避免类内部发生修改时,导致整个程序的修改
五、在类中使用方法:
访问修饰符 返回类型 方法名(参数)
{
//方法体
}
用void表示这个方法不需要返回值
使用值传递,在方法中对参数值的更改在调用后不能保留
使用ref方式传递,可以将参数值的更改保留
ref侧重于修改,out则更侧重于输出
注意:在方法中没有给out参数赋值之前,是不能使用这个参数进行运算;而ref则不需要。
六、方法的重载:
1、使用场合:对于用户看来是一样的(近似相同功能),但是对于程序员看来是不一样的(实现的代码不同)。
2、条件:A、同一类中 B、方法名完全相同 C、方法签名不能完全相同(包括参数的数据类型、参数的个数、返回类型)
示例:
Code
using System;
using System.Collections.Generic;
using System.Text;
namespace MyAdd
{
class Add
{
public int Sum(int para1, int para2)
{
return para1 + para2;
}
public int Sum(int para1, int para2, int para3)
{
return para1 + para2 + para3;
}
public double Sum(double para1, double para2)
{
return para1 + para2;
}
public string Sum(string para1, string para2)
{
return para1 + para2;
}
}
class Program
{
static void Main(string[] args)
{
Add myAdd = new Add();
int num1, num2;
Console.WriteLine("请输入两个数字:");
num1 = int.Parse(Console.ReadLine());
num2 = int.Parse(Console.ReadLine());
int sum = myAdd.Sum(num1, num2);
Console.WriteLine("结果是{0}", sum.ToString());
}
}
}
七、静态方法和实例方法的区别:
主要是 1、static关键字 2、调用方式
八、使用构造函数创建对象:
1、一个类的构造函数名通常与类名相同
2、构造函数没有返回值
3、一般情况下,构造函数修饰符是public
4、功能仅限于完成对象初始化
5、调用方法必须用"new"关键字
6、this关键字
7、每个类都有构造函数,如果没有定义,则系统会自定义一个构造方法。
示例:
Code
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace MySchool
{
class Student
{
public Student() { }
public Student(string name)
{
this.Name = name;
}
public Student(string name, int age, string hobby)
{
this.Name = name;
this.Age = age;
this.Hobby = hobby;
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int age;
public int Age
{
get { return age; }
set
{
//属性是聪明的字段
if (value > 0 && value < 100)
{
age = value;
}
else
{
age = 18;
}
}
}
private string hobby;
public string Hobby
{
get { return hobby; }
set { hobby = value; }
}
public void SayHi()
{
string message;
message = string.Format(
"大家好,我是 {0} 同学,今年 {1} 岁了,我喜欢 {2}。",
name, this.age, this.hobby
);
MessageBox.Show(message);
}
}
}
命名规范:在C#中除了变量名是Camel命名法,其余都是Pascal命名法。