A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 jerviscui 于 2013-6-23 20:37 编辑




提到面向对象,必定会想到三要素:封装、继承、多态。以下是个人的理解:

封装:对一类事物抽象出共同的属性、方法,封装成类。对外只提供功能实现的接口供用户使用,而用户不必考虑接口内部是如何实现的。

继承:类之间可以有继承的关系。子类可以拥有父类指定的方法和属性,在次基础上子类还可以制定父类没有的方法和属性。

多态:指同一实体同时具有多种形式。将子类对象赋值给它的父类对象后,父对象自动调用子类中重写的方法。

多态的好处:把不同子类对象都当做父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,以适应需求的不断变化。



  • 属性、字段、方法


属性、字段、方法都可以叫做类的成员。

字段:就是类的状态(就是C++中的属性)。变量开头字母应小写。

属性:我理解为带有get、set方法的字段。变量开头字母应大写。

方法:类内成员函数。

通过public、private等访问控制限制成员在哪些地方可以被调用。应该注意字段不要设置为public。

属性的书写格式:

class Person {

     private string name;

            public string Name {

                 set {

                     this.name = value;

                }

                get {

                     return name;

                }

          }

    }

}

可以简化成:

class Person {
           public string Name { get; set;}
       }

属性成员写操作时候调用set方法,读操作时调用get方法。只写get或set方法,构成只读或只写属性。




  • 构造函数


通过构造函数完成类对象的创建。没有声明构造函数的情况下,会自动创建无参构造函数。

1.构造函数名和类名相同,无返回值。

2.构造函数可以没有参数

3.可以有多个构造函数,构成重载



  • 析构函数


当对象脱离其作用域时,系统自动执行析构函数。同样没有声明析构函数的情况下,会自动创建析构函数。

1.一个类只能有一个析构函数。

2.析构函数无参数、无返回值。

3.析构函数不能被调用(自动被编译器调用)。



  • 异常捕获


try {

}

catch (Exception ex) {

}

throw new Exception();   // 通过throw抛出自定义异常

其实报出异常时的对象是Exception类的子类,使用Exception类对象执行子类方法,这就是多态的应用。



  • static关键字


1.static修饰的类成员和方法不需要实例化对象,直接通过类名.调用。

2.static方法中可以调用其他static成员,但不能调用非static成员。非static方法可以调用static成员。

3.static修饰的类叫做静态类,静态类多用来实现函数库。



  • 命名空间 namespace


不同于C++使用域名解析::,C#中调用指定命名空间的方法,通过命名空间.方法名的方式调用。也可以使用 using 命名空间;来打开命名空间。



  • 索引器


C#中提供了按照索引器进行访问的方法。索引器相当于属性的一个扩展,通过类对象[索引器参数列表]的方式调用索引的get、set方法。

一个类中可以有多个不同参数列表的索引器构成重载。

class Person {

    public string this[int index] {

        set {

        }

        get {

            return "";

        }

    }

}

Person p = new Person();

p[1] = "A";  //索引器写操作调用set方法

Console.WriteLine(p[1]);   //索引器读操作调用get方法

仅有get或者set的方法构成只读只写索引器


-The End-

© Jervis


3 个回复

正序浏览
积木玩偶 发表于 2013-6-21 13:30
在构造函数中,如果只创建了有参构造方法就会自动屏蔽掉无参构造方法,如果仍想使用无参构造方法则需要手动 ...

确实是啊
回复 使用道具 举报
在构造函数中,如果只创建了有参构造方法就会自动屏蔽掉无参构造方法,如果仍想使用无参构造方法则需要手动增加进去?! 是有这么一条的对吧?
回复 使用道具 举报
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马