C#论坛-玄机论坛-C#论坛-玄机宝盒-玄机类库-C#

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 666|回复: 2

[随便聊聊] C# 面向对象基础知识笔记

[复制链接]

该用户从未签到

老段啦 发表于 2014-11-16 15:26:20 | 显示全部楼层 |阅读模式

玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
如有疑问,请加入官方群询问

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
最近一直在看C#基础知识
以前很多看别人代码不懂得地方,原来都是面向对象基础部分;
下面分享下这几天做的笔记,会的人可以复习下,不会的人可以参考讨论下

装箱就是把值类型打包到Object引用类型,拆箱就是指从对象中提取值类型(拆箱和装箱会消耗资源是时间的)


类就是具有相同属性和功能的对象的抽象集合eg:
class Cat
{
    public string    Shot()
    {
    }
}
一、类名称首字母要大写。多个单词则各个首字母大写;
二、对外公开的方法要用“public”

实例化就是创造对象的过程,使用new关键词
方法重载提供了创建同名的多个方法的能力,但这些方法需使用不同的参数类型。即,方法重载,方法名字相同,参数个数或者参数类型不同。方法重载的目的是,在不改变原来方法的基础上,新增方法功能
属性是一个方法或一对方法,但在调用它的代码看来,它是一个字段,即属性适合于以字段的方式使用方法调用的场合。
字段是存储类要满足其设计所需要的数据,字段是类相关的变量。
class Cat
{
    pirvate int ShotNub;//字段
    public string   Nub//属性
    {
            get{return ShotNub;}
            set{ShotNub=value;}
    }
}

如果类的成员没有加修饰符,被认为是private的。
通常字段都是private,即私有的变量,而属性都是public,即共有的变量
属性一般首字母大写,而字段则一般首字母小写或前面加“_”下划线


封装:每个对象都包含它能进行操作所需要的所有信息,这个特性称为封装,因此对象不必依赖其他对象来完成自己的操作。这样的方法和属性包装在类中,通过类的实例来实现
封装的好处:
一、良好的封装能够减少耦合
二、类内部的实现可以自由地修改
三、类具有清洗的对外接口
==========================================================================================================
继承:对象的继承代表了一种“is-a”的关系,如果两个对象A和B,如果描述为‘B’是‘A’,则表明B可以继承A。
继承者还可以理解为是对被继承者的特殊化,因为它除了具备被继承者的特性外,还具备自己的独有的个性。
在继承关系中,继承者可以完全替换被继承者,反之则不成立。
继承定义了如何相互关联,共享特性。继承的工作方式是,定义父类和子类,或叫做基类和派生类,其中子类继承父类的所有特性。子类不但继承父类的所有特性,还可以定义新的特性。如果子类继承与父类:
一、子类拥有父类非private的属性和功能;
二、子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;
三、子类还可以以自己的方式实现父类的功能(方法重写)


子类从它的父类中继承的成员有方法、域、属性、事件、索引指示器,但对于构造方法,有一些特殊,它不能被继承,只能被调用。对于调用父类的成员,可以用base关键字


子类中重写函数,可以使用new 和override
当父类函数不使用override,子类函数使用new重写时候
1、子类创建父类对象,父类对象调用方法是父类的方法
2、子类创建子类对象,子类对象调用方法是子类的方法
当父类函数使用virtual,子类使用override重写函数时候:
1、子类创建父类对象,父类对象调用方法是子类的方法
2、子类创建子类对象子类对象调用方法是子类的方法

继承的缺点是,父类变,子类不得不变
继承会破坏包装,父类实现细节暴漏给子类


当两个类之间具备“is-a”的关系的时,就可以考虑用继承了,因为这表示一个类是另一个类的特殊种类,而当两个类之间是“has-a”的关系时,标识某个角色具有某一项责任,此时不合适用继承。
=============================================================================================
多态:多态表示不同的对象可以执行相同的动作,但要通过他们自己的实现代码来执行
对象的声明必须是父类,而不是子类,实例化的对象是子类,这才能实现多态。
特点:
一、子类以父类的身份出现
二、子类在工作时以自己的方式来实现
三、子类以父类的身份出现时,子类特有的属性和方法不可以使用
为了使子类的实例完全接替来自父类的类成员,父类必须将该成员声明为虚拟的。这是通过在该成员的返回类型之前添加virtual关键字来实现。
通常虚拟的是方法,但其实除了字段不能虚拟的,属性、事件、和索引器都可以是虚拟的。尽管方法可以是虚拟的,但虚方法还是有方法体的,可以实际做些事情。然后子类可以选择使用voerride关键字,将父类实现替换为它自己的实现,这就是方法重写override,或者叫做方法复写。


多态的原理是当方法被调用时,无论对象是否被转换为其父类,都只有位于对象继承链最末端的方法实现会被调用。也就是说,虚方法是按照其运行时类型而非编译时类型进行动态绑定调用的
===================================
抽象类 abstract
一、抽象类不能实例化
二、抽象方法是必须被子类重写的方法
三、如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其他一般方法。


抽象类不能定义函数体
继承抽象类的子类,抽象方法必须重写override
抽象类可以继承抽象类


抽象类通常代表一个抽象概念,它提供一个继承的触发点,当设计一个新的抽象类时,一定是用来继承的。所以,在一个以继承关系形成的等级结构里面,树叶节点应当是具体的类,而树枝节点均淫荡是抽象类
===================================
接口 interface
接口是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。一旦类实现了接口,类就可以支持接口所指定的所有属性和成员。
声明接口在语法上与声明抽象类完全相同,但不允许提供接口中任何成员的执行方式。
所以接口不能实例化,不能有构造方法和字段:不能有修饰符,比方public,privata等,不能声明虚拟的或静态的等。
还有实现接口的类就必须要实现接口中所有的方法和属性。
接口的命名,前面要加一个大写字母“I”
===================================
接口和抽象类的区别
从表象上来说,抽象类可以给出一些成员的实现,接口却不包含成员的实现,抽象类的抽象成员可被子类部分实现,接口的成员需要需要实现类完全实现,一个类只能继承一个抽象类,但可以实现多个接口
一、类是对对对象的抽象;抽象类是对类的抽象‘接口是对行为的抽象
接口是对类的局部(行为)进行的抽象,而抽象类是对类的整体(字段、属性、方法)的抽象,
二、如果行为跨越不同类的对象,可以使用接口;对于一些相似的类对象,用继承抽象类
三、从设计角度讲,抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承父类,而接口是根本不知道子类的存在,方法如何实现还不确定,预先定义。

===================================
集合
.NET Framework提供了用于数据存储和检索的专用类,这些类通称集合。这些类提供对堆栈、队列、列表和哈希表的支持。大多数集合类实现相同的接口
ArrayList是实现了IList接口的类

===================================
泛型
泛型是具有占位符(类型参数)的类、结构、接口和方法,这些占位符是类、结构、接口、和方法所存储或使用的一个或多个类型的占位符。泛型集合类可以将类型参数用作它所存储的对象的类型的占位符;类型参数作为其字段的类型和其方法的参数类型出现
泛型需要空间 System.Collection.Generic的命名空间
List类是ArrayList类的泛型等效类。该类使用大小可按需动态增加的数组实现IList泛型接口
IList<Animal> arrayAnimal=new   List<Animal>();




评分

参与人数 2紫晶 +24 收起 理由
君临 + 20 奉上小小红包希望笑纳
Solo + 4 感谢分享,很给力!~

查看全部评分

玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/thread-1218-1-1.html
如果失效请联系站长重新分享
回复

使用道具 举报

该用户从未签到

 楼主| 老段啦 发表于 2014-11-16 15:38:21 | 显示全部楼层
忘记说了  全部内容都是出自《大话设计模式》
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/thread-1218-1-1.html
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-1-20 13:58
  • 签到天数: 1 天

    [LV.1]【初入江湖】

    1000374 发表于 2018-1-20 21:52:34 | 显示全部楼层
    看一看。。。。
    玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    帖子内网盘失效后请使用下面地址

    http://bbs.msdn5.com/thread-1218-1-1.html
    如果失效请联系站长重新分享
    回复

    使用道具 举报

    *滑动验证:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    QQ|Archiver|手机版|小黑屋|玄机论坛   

    GMT+8, 2018-6-21 16:23 , Processed in 0.618126 second(s), 25 queries .

    Powered by Msdn5.com

    © 2014-2015 Msdn5 Inc.

    快速回复 返回顶部 返回列表