面向对象编程OOP(Object-Oriented Programming)

类和对象

类是对象的定义,对象是类的实现。

[属性集信息] [类修饰符] class 类名 [:类基]    //定义类的语法格式,方括号可省略,类修饰符默认为public,隐含基类默认为object

{类成员}

属性集信息:c#语言提供给程序员的为程序中的各种实体附加一些说明

部分类修饰符:private:只能这个类的成员访问

      protected:只能被本类及本类的子类(派生类)访问

      internal:在本程序集中可访问。

      public:完全可访问。

      abstract:抽象类,含有抽象成员,不能被实例化,只能做基类。

      sealed:密封类,不能再派生出其他类。

类基:定义该类的直接基类和由该类实现的接口。

类成员:由两部分组成,一部分是以类成员声明形式引入的类成员,另一部分是直接从它基类继承而来的成员。

    类成员声明主要包括常数声明,字段声明,方法声明,属性声明,事件声明,构造函数声明,析构函数声明等。

    当字段,方法,属性,事件,运算符,和构造声明中含有static修饰符时,表明是静态成员,不能实例化。

部分类成员访问修饰符:private/protected/internal/public 同上

常数声明:常数表达式的值应该是一个可以在编译时计算的值,不允许使用static修饰符,但他和静态成员一样,只能通过类访问。

[属性集信息] [常数修饰符] const 类性 标识符 = 常数表达式[]    //方括号可省略,类修饰符默认为public,隐含基类默认为object

字段声明:变量声明列表可以用逗号来分隔多个变量,并且变量标识符还可以用赋值号设定初始值。字段其实就是声明一个变量。

可用readonly修饰符,表示只读字段。只读字段可以在定义时或构造函数时赋值,它的值不能在编译时确定,只能在运行时确定。常量只能在定义时赋值,常量值在编译时已经确定,在程序中不能确定。

[属性集信息] [常数修饰符] 类性 变量声明列表    //方括号可省略,字段的默认修饰符为private,

构造函数和析构函数:是类中比较特殊的两种类,分别用来对对象进行性初始化和回收对象资源。

不写构造函数,默认有一个没有参数的构造函数。

如果一个类含有构造函数,在实例化该类的对象时就会调用,如果含有析构函数则会在销毁对象时调用。

构造函数的名字与类名相同,析构函数的名字与构造函数形同,析构函数名字前面要加一个波浪号。

构造函数:无返回值,连void都不需要,方法名必须是类名,如无构造函数则系统默认一个无参构造函数,可定义多个构造函数(重载:参数类型不同,个数不同,顺序不同),静态属性与静态构造函数(静态构造函数的执行是系统进行控制的)

public 类名(){}

属性:属性的主要用途是限制外部类对类中成员的访问权限,定义在类级别上。

属性不存数据。

属性可以忽略get或set访问器,但是不能两个都忽略。

get方法没有参数;set方法有一个隐含的参数value。

[属性集信息] [常数修饰符] 类性 属性名

{

get{}

set{}

}

面向对象的三个主要特征:封装、继承、多态。

封装具体的表现是类,类是将具有相同特征的事物封装在一起,
存储的是一类事物的属性及方法;对象是类的具体实现,
表示的是一个具体的事物;
属性和方法;但是每个对象的属性值和方法执行的结果都是不一样的(静态属性及静态方法除外);

方法的默认修饰符是internal;顶级类默认修饰符为internal(只能是public或internal);

一个栗子:

类:所有的桌子

对象:一个桌子

属性:桌子的款式,桌子的高度,桌子材质

方法:放书,当材火烧,可以伸缩大小

封装:定义了桌子类,有材质这个属性,把(逻辑处理)封装起来,只留接口访问。

这个桌子,该暴露什么,不该暴露什么,由类的设计中觉得,private属性用户不能直接访问,如果提供了接口访问材质这个属性,那么可以修改这个属性的值

通过方法修改属性和直接修改属性的区别:是方法修改属性可以做限制,如果不良商人用垃圾木头做桌子呢。那么这个方法就可以做限制。

继承:一个对象(桌子),有某个方法(伸缩),另一个对象(桌子)刚好没有,最简单的就是另外一个继承这个伸缩方法

多态:一个对象(桌子),每个桌子都有相同的方法(放东西),但有的放电脑,有的放书。这就是多态

果然现在回头来看还是不太懂,太难理解,还要继续去思考。

坑先填这么多,剩一部分回来再填。

16.12.16 ps:给大家推荐一个视频教程 http://study.163.com/course/courseMain.htm?courseId=214019 传智博客的一个讲解面向对象的视频,

        讲解浅显易懂,课时还少,一下午就可以看完。大家可以去看一看,先理解个大概就能看明白了。

转载请联系

C# 面向对象基础的更多相关文章

  1. 了解JavaScript 面向对象基础 & 原型与对象

    面向对象语言中的对象 老是能听到什么基于对象, 面向对象. 什么是对象, 如果有面向对象基础的人可以无视了, 下面举个简单的例子给大家讲讲面向对象中, 对象的定义, 这个是比较通用的, 不过对于JS来 ...

  2. MYSQL、PHP基础、面向对象基础简单复习总结

    一.MYSQL         1.配置MySql                 第一步安装服务器(apache).                 第二部安装MySql界面程序         2 ...

  3. 从零开始学Python第六周:面向对象基础(需修改)

    标签(空格分隔): 面向对象 一,面向对象基础 (1)面向对象概述 面向过程:根据业务逻辑从上到下写代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类 ...

  4. python面向对象基础

    面向对象基础 1. 简述 编程方式: 面向过程: 根据代码在脚本的堆叠顺序,从上到下依次执行 函数式编程:将相同功能的代码封装到函数中,直接调用即可,减少代码重复性 面向对象:对函数进行分类和封装,将 ...

  5. java基础学习05(面向对象基础02)

    面向对象基础02 实现的目标 1.String类的使用2.掌握this关键字的使用3.掌握static关键字的使用4.了解内部类 String类 实例化String对象一个字符串就是一个String类 ...

  6. java基础学习05(面向对象基础01--类实例分析)

    面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过set ...

  7. java基础学习05(面向对象基础01)

    面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...

  8. 8.python笔记之面向对象基础

    title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...

  9. 【重走Android之路】【Java面向对象基础(三)】面向对象思想

    [重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想   1 面向对象的WWH   1.1 What--什么是面向对象         首先,要理解“对象”.在Thinkin ...

  10. 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder

    [重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder   1.String String是Java中的一个final ...

随机推荐

  1. Python高手之路【三】python基础之函数

    基本数据类型补充: set 是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object ...

  2. 【WCF】错误协定声明

    在上一篇烂文中,老周给大伙伴们介绍了 IErrorHandler 接口的使用,今天,老周补充一个错误处理的知识点——错误协定. 错误协定与IErrorHandler接口不同,大伙伴们应该记得,上回我们 ...

  3. javascript匹配各种括号书写是否正确

    今天在codewars上做了一道题,如下 看上去就是验证三种括号各种嵌套是否正确书写,本来一头雾水,一种括号很容易判断, 但是三种怎么判断! 本人只是个前端菜鸟,,不会什么高深的正则之类的. 于是,在 ...

  4. .Net Core上也可以使用的二维码组件

    我Fork了QRCoder,并且兼容了.Net Core,图形库用的是ZKWeb.System.Drawing Github: https://github.com/zkweb-framework/Q ...

  5. FullCalendar日历插件说明文档

    FullCalendar提供了丰富的属性设置和方法调用,开发者可以根据FullCalendar提供的API快速完成一个日历日程的开发,本文将FullCalendar的常用属性和方法.回调函数等整理成中 ...

  6. APEX:对object中数据进行简单处理?

    在Salesforce中,常常要对各种数据进行处理,已满足业务逻辑.本篇文章会介绍如何实现从object获取数据,然后将取得的数据进行一系列简单处理. 第一步:SongName__c 是一个新建的ob ...

  7. “老坛泡新菜”:SOD MVVM框架,让WinForms焕发新春

    火热的MVVM框架 最近几年最热门的技术之一就是前端技术了,各种前端框架,前端标准和前端设计风格层出不穷,而在众多前端框架中具有MVC,MVVM功能的框架成为耀眼新星,比如GitHub关注度很高的Vu ...

  8. 软件工程(C编码实践篇)学习心得

    孟繁琛 + 原创作品转载请注明出处 + <软件工程(C编码实践篇)>MOOC课程 http://mooc.study.163.com/course/USTC-1000002006 软件工程 ...

  9. Log4Net应用问题

    问题 一.日志存储方式 1.txt 2.SQLServer数据库 3.log文件 二.项目类型不同 1winFrom 2webFrom 3MVC 4WPF 5控制台 三.切分依据不同 1.空间大小 2 ...

  10. windows 7(32/64位)GHO安装指南(系统安装篇)~重点哦!!~~~~

    经过了前三篇的铺垫,我们终于来到了最重要的部分~~如果没看过前几篇的小伙伴们,可以出门右转~~用十几分钟回顾一下~~然后在看这篇会感觉不一样的~~~~ 下面让我们来正式开始吧 我们进入大白菜的桌面是酱 ...