c#中的classes和objects一些知识【1】

首先我们需要知道面向对象语言(Object-oriented language)的三大特点:封装(Encapulation),继承(Inheritance),多态(Polymorphism)

引言:常见的面向对象语言有C++,JAVA,C#等等。首先先定义一个类,方便大家初步去掌握类到底是怎么写的。

public class Students

{                                     

    int sid;

    int age; //如果不标注private还是public,则默认为private

    …………

    public void getName(){

    ……

}

}

类的实例化以及调用是和c++一样的。

对于类前面的访问修饰符,大致有这么几种

  1. pulic:对于一个放在同一个组合里的其他代码和引用了它的其他组合的代码,都是可以运用此类型并且调用其成员以及成员函数的。
  2. private:本类中才能访问其成员和成员函数,然而类外面的代码是不可以运用的。
  3. protected:此类的成员和方法只能被本类中的,或者它的派生类使用,其他不能的(从这样来看,介于public和private之间)。
  4. internal:此类的成员可以被同一个组合的代码使用,然而不能被其他组合的代码使用。
  5. protected internal:此类的成员可以被同一个组合的代码使用,或者被任何其它组合中此类的派生类使用。

在以往c++的学习中,已经知道了一些面向对象的知识,此次对C#的学习中,很多东西就可以略过了,不过对于一些常见的错误或者需要注意,不好理解的地方,在此分享给大家:

1、形参和实参的问题:                  一个事例说明一下:

 

这是输出示例,可以看出,实参在传入函数中时候并没有被改变其真正的值,只是把实参的值赋给了形参,然后形参进行了相应的运算,对于实参的值并没有任何影响。然而如果把一个对象传入的话,可以理解为把对象的指针传入,此时,方法内部的操作会影响到对象的属性。

2、this的应用

1.避免混淆: 例如这段小代码:

public void SomeMethod(int parameter){

     this.parameter = parameter;

              //在此段代码中,当前对象的属性parameter通过这种方式就//可以引用出来,否则会被形参parameter掩盖。

}

2.将当前的对象可以作为一个参数 例如:

return this;

      或者是  B.someMethod(this);

      3.在一个构造函数执行前,调用重载的构造函数 例如下面代码:

 

通过示例,可以看出来this可以调用有参数的构造函数去实现无参数的构造函数。

3、静态成员(static members)

a)   静态成员是可以看做类的一部分。因为它可以被类名直接去调用。

b)   静态的方法里面是没有this指针的

c)   静态的方法不可以去使用一个非静态的成员。

4、静态的构造函数

a)   当类被实例化的时候,它是被最先调用的。

b)   静态构造函数前不允许加public,private等修饰符

c)   如果属性只能被赋值一次,这种方法不错。

5、静态类:  

a)   不能实例化

b)   不能派生

c)   不能有非静态的成员和方法

d)   然后我实在搞不懂它想干什么……大家可以给我评论也教教我。

posted @ 2015-03-30 19:13  闫文雄  阅读(426)  评论(0编辑  收藏  举报