1、构造函数
定义一个类时,C#默认会实现一个隐式的构造函数,默认的构造函数不接受参数,负责把新对象分配到内存中并确保所有字段数据都设置为正确的默认值。然而,一旦自定义了构造函数,默认构造函数就被自动从类中移除不再有效!
如果希望继续使用自定的构造函数,也需要有默认构造函数为字段创建默认值,则需要显式的重新定义默认构造函数!绝大多数情况下默认构造函数的实现是故意为空。

2、this关键字

this关键字提供对当前类实例的访问。静态成员不能使用this,因为不是实例。

3、静态

  静态数据字段:

    对所有对象的实例共享。

  静态构造函数:

   静态构造函数是特殊的构造函数,非常适合于编译时静态数据初始化值未知的情况。

  注:1个类只能定义一个静态构造函数。(不可以重载)

   静态构造函数不允许使用访问修饰符(public等)且不接受任何参数

  无论创建多少对象,其静态构造函数只执行一次。

  静态构造函数的执行优先于任何实例级别的构造函数。

  静态类:(只包含静态功能的类或结构通常被称为工具类)

    静态类不能实例化。

    静态类只能包含静态的成员和字段。

防止类被实例化的方法:

  • 构造方法私有 即使用private声明
  • 将类定义为抽象类
  • 静态类(更安全、更简洁)

4、面向对象的三个支柱:封装、继承、多态

封装的作用!

代码重用:

   继承:is-a的关系!

       包含/委托:has-a的关系(或称聚合)!

   例:

     class Radio
{
public void power(bool turnon)
{
Console.WriteLine("Radio is {0}",turnon);
}
} class Car
{
//汽车has-a收音机
private Radio myRadio = new Radio();
public void TurnOnRadio(bool onOff)
{
myRadio.power(onOff);
}
}

5、非嵌套类型不能标记为私有

6、自动属性

7、对象初始化语法

   // 手动设置每个属性
Point firstPoint = new Point();
firstPoint.X = ;
firstPoint.Y = ;
firstPoint.DisplayStats(); // 或通过自定义构造函数创建对象.
Point anotherPoint = new Point(, );
anotherPoint.DisplayStats(); // 或使用对象初始化语法创建对象.
Point finalPoint = new Point { X = , Y = };
finalPoint.DisplayStats(); // 创建并初始化矩形
Rectangle myRect = new Rectangle
{
TopLeft = new Point { X = , Y = },
BottomRight = new Point { X = , Y = }
};

8、常量(const)与只读字段(readonly)

常量在运行前确定,定义一个常量时即为其赋值,赋值后不能则进行修改。常量是隐式静态的,使用类名前缀使用常量。

只读字段可在运行时确定,但必须在构造函数之中,否则报错。只读字段默认不是静态的。

静态只读字段。运行前确认值的只读字段与常量相似。

     class MyMathClass
{
public static readonly double PI;
static MyMathClass()
{ PI = 3.14; }
}

C#之面向对象初步的更多相关文章

  1. JavaScript面向对象初步认识

    一.面向对象初步认识 1.什么是对象? 一句话解释: 万物皆对象 对象是有属性的:用{ }来写入! 2.对象的应用(接口) json 接口简单的说就是后台提供给前端提供数据的,让我们进行渲染! 请求接 ...

  2. 【java开发】面向对象初步认识与基础概念讲解

    简单的把前面的java基础知识讲了,接下来就开始面向对象的旅程了. 对象(Object):简而言之,世界是由对象组成的,一切可见的事物吧 类(class):说白了就是把具有相同的一些特征或是属性归为一 ...

  3. JAVA面向对象初步知识总结:封装、继承、多态

    1.封装 把数据和方法包装进类中,以及具体实现的隐藏,常共同被称作是是封装.其结果是一个同时带有特征和行为的数据类型.所谓具体实现的隐藏是通过访问权限控制实现的.JAVA 子类重写继承的方法时,不可以 ...

  4. js面向对象初步探究(上) js面向对象的5种写方法

    非常长一段时间看网上大神的JS代码特别吃力.那种面向对象的写法方式让人看得云里来雾里去.于是就研究了一下JS面向对象.因为是初学,就将自己在网上找到的资料整理一下,作为记忆. js面向对象的5种写方法 ...

  5. Python进阶-XIV 面向对象初步

    1.面向对象的引入 def Person(*args): ''' 定义一个人 :param args: 人的属性 :return: 人的所有属性的字典 ''' info = {} info['name ...

  6. 初步学习JAVA面向对象初步认识及面向对象内存分析图举例说明

    1. 说到面向对象, 一个绕不开的话题,就是面向过程. 面向过程适合简单.不需要协作的事务. 面向过程 = 分解问题 + 逻辑为先 = 先细节,再整体. 对比面向过程, 面向对象是模块化的, 当我们思 ...

  7. cpp 面向对象初步探索

    需求 尝试定义一个complex(复数类) 简略实现 headers/complex.h #ifndef __COMPLEX__ #define __COMPLEX__ class complex { ...

  8. 面向对象第一次练手-------ArrayList集合、类、对象、冒泡排序、类型转换

    思维转不过弯儿来  怎么做都是错      哪怕差一个()就成功的事情,也是千差万别 忽然想到一句话:差一步就成功的距离  =  差几万米就成功的距离 部分的理解和都体现在代码和注释里 using S ...

  9. python 21 面向对象

    目录 1. 面向对象初步认识 2. 面向对象的结构 3. 从类名的角度研究类 3.1 类名操作类中的属性 3.2 类名调用类中的方法 4. 从对象的角度研究类 4.1 类名() 4.2 对象操作对象空 ...

随机推荐

  1. STM32先设置寄存器还是先使能时钟

    http://zhidao.baidu.com/link?url=gdVNuIgLOJcV37QzbCx0IrFip5pskiPQDWpoZayr_xBEe120p4d_iWtrfDl1d4tSFaH ...

  2. winform 映射字段的写法:

    public partial class FrmFieldMapping : DevComponents.DotNetBar.Office2007Form { private AMDataFieldC ...

  3. UVaLive 7503 Change (坑题。。。。。。)

    题意:给定两个人民币,问你花最少钱保证能够凑出另一个价格. 析:这个题最大的坑就是在,并一定是一次就凑出来,可以多次,然后就可以想了,如果要凑的数和1有关,特判,如果是2倍数,0.01就够了,否则就是 ...

  4. JedisPool使用原理和源代码

    1,JedisPool的使用 <!-- 连接池的配置信息 --><beanid="jedisConfig"class="redis.clients.je ...

  5. JPA一对多和多对一关系

    1-m:多的一方为关系维护端,关系维护端负责外键纪录的更新,关系被维护端没有权力更新外键纪录. 维护端注解 @OneToMany(cascade = { CascadeType.PERSIST, Ca ...

  6. 有关获取session属性时报nullPointException(空指针异常)的解决方案

    一般我们在从session中获取数据时,需要先进行赋值,也就是必须先进行session.setAttribute(String,Object)方法进行赋值,然后我们才能从session中获取内容,但是 ...

  7. linq 动态排序,不使用反射

    之前网上搜索的相关方法都是使用了反射的方法来动态获取字段,以实现动态linq排序,但是因为项目组觉得此方法效率低下,所以不予采纳. 所以有了以下代码 public interface IBase{ d ...

  8. 剖析SSH核心原理(一)

      在我前面的文章中,也试图总结过SSH,见 http://blog.csdn.net/shan9liang/article/details/8803989 ,随着知识的积累,总感觉以前说得比较笼统, ...

  9. WaitForMultipleObject与MsgWaitForMultipleObjects用法

    http://blog.csdn.net/byxdaz/article/details/5638680 用户模式的线程同步机制效率高,如果需要考虑线程同步问题,应该首先考虑用户模式的线程同步方法. 但 ...

  10. 一次JQuery性能优化实战

    同事写了段JQuey的代码,在某些机器上,会出现IE假死的性能问题. 我测试了一下代码花费的时间,在我的机器上,会花费600多毫秒,但在某些机器上会花费6秒多(10倍的增长),这样就导致了IE的假死. ...