在学习C#的过程中总会遇到各种困难,而出现困难源于我们对面向对象的知识了解匮乏,以至于运用的不能得心应手。在本篇博客中,小编将根据《大话设计模式》和自己的理解,带领你一起遨游在面向对象的海洋中,希望能给现在或将来对学习C#有疑惑的同僚带来帮助,你准备好了吗?
类
类是具有相同的属性和功能的对象的抽象的集合。
举例:
土豪家有阿富汗猎犬、秋田犬、柯基犬、贵宾犬、京巴犬,现在需要它们叫,请实现这个功能。
土豪家有阿富汗猎犬、秋田犬、柯基犬、贵宾犬、京巴犬,现在需要它们叫,请实现这个功能。
理解:我们可以分析这个题,题干中说的是让阿富汗猎犬、秋田犬、柯基犬、贵宾犬和京巴犬叫。根据类的定义,他们都有共同的特点叫,而且他们都同属于一种动物——狗,那么我们就可以定义一个狗类,在狗类中把叫定义成一个方法,如果阿富汗猎犬、秋田犬、柯基犬、贵宾犬和京巴犬叫就去调用这个方法。
代码如下:
class Dog //定义狗类
{
public string Shout() //公共方法
{
return "汪汪汪";
}
}
客户端
private void 阿富汗猎犬_Click(object sender,EventArgs e)
{
Dog dog=new Dog(); //声明一个Dog的对象,然后将此dog对象实例化(实例化的过程就是创建对象的过程)
MessageBox.Show(dog.Shout()); //调用方法
}
构造方法
构造方法,又叫构造函数,是对类进行初始化。构造方法与类同名,无返回值,也不需要void,在new时候调用。
所有类都有构造方法,如果不编码则系统默认生成空的构造方法,若有定义的构造方法,那么默认的构造方法就会失效。
class Dog
{
//声明Dog类的私有字符串变量name
private string name=""; //类的成员属性
//定义Dog类的构造方法,参数是输入一个的字符串
public Dog(string name) //name是getName这个方法(函数)的一个参数
{
this.name=name;
//将参数name的值赋值给本对象的成员变量【小菜】name
//this.name是实例化对象的属性,如果我们有这个类的实例对象叫person,那么this.name也就相当于people.name,后边的name是传进来的参数
}
public string Shout()
{
return "我的名字叫"+name+"汪";
}
}
客户端
private void 阿富汗猎犬_Click(object sender,EventArgs e)
{
Dog dog=new Dog("咪咪");
MessageBox.Show(dog.Shout());
}
效果:我的名字叫咪咪 喵
方法重载
方法重载提供了创建同名的多个方法的能力,但这些方法需使用不同的参数类型。
class Dog
{
private string name="";
public Dog(string name)
{
this.name=name;
)
public Dog()
{
this.name="无名";
}
public string Shout()
{
return "我的名字叫"+name+"汪";
}
客户端
private void 阿富汗猎犬_Click(object sender,EventArgs e)
{
Dog dog=new Dog("小黑");
MessageBox.Show(dog.Shout());
}
效果:我的名字叫小黑 汪,若Dog dog=new Dog( );则效果为:我的名字叫无名 汪
小菜
成员变量:又称全局变量,在程序的一开始定义的变量。和类的方法处于一个层次。成员变量相当于银行中的取号机,银行中的人都可以对其使用。作用域是整个程序。
语法:
变量修饰符 类型 变量名;
局部变量:在子程序中定义的变量,作用域是定义该变量的子程序。