C#面向对象——抽象,类

面向对象的概念

面向对象编程(Object  Oriented  Programming)简称OOP:

用认识一个系统的方式来分析、设计和实现一个系统

面试答案:封装、继承和多态即为面向对象

面向对象的方法包括:

面向对象的分析(OOA, Object-Oriented Analysis)

面向对象的设计(OOD, Object-Oriented Design)

面向对象的程序设计(OOP, Object-Oriented Program)

面向对象技术主要围绕以下几个概念:

对象、抽象数据类型、类、继承性、多态性。

面向对象VS面向过程:相辅相成

面向过程:

先有算法,后有结构

面向对象:

先有结构,后有算法

面向对象的优点

可重用性(类)

可扩展性(继承)

可管理性(接口)

OOP的四个基本机制

抽象

封装

继承与派生

多态性

=>:抽象和分析

事物(虚拟或现实)=>计算机世界(类)

含义:用类描述复杂(复合)的事物

要求:

数据抽象(变量)---描述某类对象的状态(对象相互区别的物理量);

代码抽象(方法)---描述某类对象的共有的功能。

如何实现抽象:

1.分析事物,提取其状态(变量)和行为(方法);

2.要有主次:关注重要的,忽略不重要的

类(class):一种复杂的数据类型

类之重要:类是程序的基本单元

类的定义语法:

[访问修饰符] [修饰符] class 类名 [: <基类名>] [ ,<接口列表>]

{

     构造方法;

     析构方法;

     [<访问控制符>][<修饰符>] 数据类型 <变量名>;

     [<访问控制符>][<修饰符>] 数据类型 <属性名>;

     ......

     [<访问控制符>][<修饰符>] <返回值类型><方法名> ([参数列表]);

}

类、传统类型(int、char、float...)、数组的对话:

传统类型:我可以存储数据

数组:我可以存储很多数据

类:你们都属于我

传统类型:。。。

数组:。。。

传统类型:我出品变量很简单,类型 空格 变量名即可

数组:我出品一组数据也简单,类型[] 空格 变量名即可

类:我也简单 类名 空格 变量名即可

传统类型:。。。

数组:。。。

使用类的方式:和传统类型一致(声明->赋值->使用)

如何声明:

类的变量:又名对象的引用 等待指向对象

   类名 变量名;

赋值:

对象的实例化:对象的生成比较复杂 称为实例化

   new <类名>([<参数列表>])

将引用指向实例:

   格式:变量名=new <类名>([<参数列表>])

使用:

通过引用来寻找对象的变量和方法

对象引用.成员变量

对象引用.成员方法([参数列表])

对象的构造过程

1.为对象开辟空间;

2.调用构造方法初始化;

3.返回对象的引用。

类和对象的关系:

1.类是对象的模板

2.一个类可以创建多个对象

3.对象是类一个特定的个体

4.对象有独立的内存空间,不会互相影响

构造方法=构造函数=构造器

构造方法:

类特殊的成员方法

声明:

构造方法与类同名,且没有返回值类型。

构造可以无参也可带参。

使用:

必须使用new关键字调用

作用:

创建类的实例并初始化对象。

初始化的缺省值都是确定的:

布尔变量的初值为:false

整数变量的初值为:0

浮点数变量的初值为:0.0

字符变量的初值为:'\0'

引用(复合)变量的初值为:null

注意事项:

系统为每个类自动提供一个默认的无参的构造方法;

若自定义构造方法,无参构造方法不再提供

追加:成员方法中的局部变量必须显式手动进行初始化 

析构方法:

声明:

   ~类名()

使用:

程序中的对象有垃圾回收器(garbage collector)负责释放,回收之前会自动调用对象对应类的析构函数,做释放前的准备工作(关闭占用资源等)。

注意事项:

1.一个类只有一个析构方法,没有返回值类型。

2.除非特殊需要,通常被省略。

this :

成员方法中的隐参,是方法所在类的一个引用变量

声明:每个成员方法自带 无需声明

作用:

1.方法被调用时,立即指向调用该方法的对象。

2.区分同名的局部变量和成员变量

3.调用本类的其他的构造方法,拷贝构造中使用较多

拷贝构造:批量无差异产生对象 之后进行少量差异化赋值

有趣的示例:

public class Person

{

      int age;

      public Person Birthday()

      {

          this.age++;

          return this;

      }

      public void ShowAge()

      {

          Console.WriteLine("age = {0}",this.age);

      }

}

public static void Main()

{

Person person = new Person();            person.Birthday().Birthday().Birthday().ShowAge();

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,974评论 6 13
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,762评论 2 9
  • 1 面向对象No6 面向对象 OO Object Oriented 编程时以对象为单元,封装数据和逻辑,以此提...
    征程_Journey阅读 1,146评论 0 2
  • 安徒生简介 诞生 1805年4月,一个婴儿出生在一张由棺材板拼成的床上。他大声啼哭着,仿佛抗议上帝将天使贬谪到人间...
    绿叶飘飘阅读 1,151评论 0 7
  • 看到某名言名句,或听到某振奋人心的话语,但也只是这样罢了,只存片刻的凤凰血,果真能于你的生活有什么大的启迪?喝鸡汤...
    厦厦阅读 234评论 0 0