类与实例
对象:
一个自包含的实体,用一组可识别的特性和行为。
类:
具有相同的属性和功能的对象的抽象的集合。
class Cat{//定义类,类名称首字母大写
public string Shout(){//对外公开的方法用public修饰符
return "喵喵喵";
}
}
实例:
一个真实的对象,实例化就是创建对象的过程,使用new关键字来创建。
private void button1_Click(object sender,EventArgs e){
Cat cat = new Cat();//将Cat实例化
MessageBox.Show(cat.Shout());
}
构造方法
构造方法:
构造方法又称构造函数,其实就是对类进行初始化。构造方法与类同名,无返回值,也不需要void,在new时调用。所有类都有构造方法,如果不编码则系统默认生成空的构造方法,若自定义构造方法,则默认构造方法失效。
class Cat
{
private string name = "";//声明Cat类的私有变量字符串name
public Cat(string name){//定义Cat类的构造方法,参数为一个字符串
this.name = name;//将参数值传给私有变量name
}
public string Shout(){
return "我的名字叫"+name+"喵";
}
}
private void button1_Click(object sender,EventArgs e){
Cat cat = new Cat("咪咪");
MessageBox.Show(cat.Shout());
}
方法重载
方法重载:
提供了创建同名的多个方法的能力,但是这些方法需要使用不同的参数类型。可在不改变原方法的基础上增加新功能。
class Cat{
private string name = "";
public Cat(string name){
this.name = name;
}
public Cat(){
this.name = "无名";
}
public string Shout(){
return "我的名字"+name+"喵";
}
}
属性与修饰符
属性:
属性是一个方法或一对方法,但在调用他的代码看来,它是一个字段,即属性适合于以字段的方式使用方法调用的场合。字段是存储类要满足其设计所需的数据,字段是与类相关的变量。
private int shoutNum = 3;//声明一个内部字段,注意是private,默认叫的次数为3
public int ShoutNum{//ShoutNum属性,注意是public
get{//外接调用可获得shoutNum值
return shoutNum;
}
set{//外界可以给内部的shoutNum赋值
shoutNum = value;
}
}
修饰符:
public表示他所修饰的类成员可以允许其他任何类来访问,俗称公有的。private表示只允许同一个类中的成员访问,其他类包括子类无法访问,俗称私有的。不加修饰符,默认为私有。通常字段都是private,而属性都是public。由于是对外的,属性一般首字母大写,字段一般首字母小写或者前面加'_'。
属性有get和set方法。get访问器返回与声明的属性相同的数据类型,表示的意思是调用时可以得到内部字段点的值或引用:set访问器没有显示设置参数,但它有一个隐式参数,用关键字value表示,它的作用是调用属性时可以给内部的字段或引用赋值。
private int shoutNum = 3;
public int ShoutNum{
//去掉set,表示ShoutNum属性是只读的
get {
return shortNum;
}
}
/*-------------------------------------------------*/
private int shortNum = 3;
public int ShoutNum{
get{
return shoutNum;
}
set{
if(value<=10)//控制叫声次数,最多只能叫10声
shortNum = value;
else
shortNum = 10;
}
}
public string Shout(){
string result = "";
for(int i=0;i<shoutNum;i++){
result +="喵 ";
}
return "我的名字叫" + name+" "+result;
}
private void button1_Click(object sender,EventArgs e){
Cat cat = new Cat("小咪");
cat.ShoutNum = 5;//给属性赋值
MessageBox.Show(cat.Shout());
}