a. OOP:面对对象思想
i. 类:是一种功能强大的数据类型,而且是面向对象的基础
. 语法:访问修饰符 class 类名{ //类的主体 }
. 成员变量:不以“函数”形式体现
a. 常量:代表与类相关的常量值
b. 变量:类中的变量
c. 事件:由类产生的通知,用于说明发生了什么事件
d. 类型:属于类的局部类型
. 成员函数:以“函数”形式体现
a. 方法:完成类中各种计算或功能的操作,不能和类同名、不能和类中其他成员同名
b. 属性:定义类的值,并对它们提供读、写操作
c. 索引指示器:允许编程人员在访问数组时,通过索引指示器访问类的多个实例,又称下标指示器
d. 运算符:定义类对象能使用的操作符
e. 构造函数:在类被实例化时首先执行的函数,主要是完成对象初始化操作,构造函数必须和类名相同
f. 析构函数:在类被删除之前最后执行的函数,主要是完成对象结束时的收尾操作,必须和类名相同,并前加一个“~”波浪线符号
ii. 构造函数:是类中一种特殊的方法,特点是 它的方法名与类名相同、没有返回类型和主要完成初始化工作。
. 隐式构造函数:默认的情况下,系统将会给类分配一个无参数的构造函数,并且没有方法体,但要注意一旦类有了构造函数,就不再自动分配构造函数了
. 无参构造函数:实例化时不需要给类的属性赋值
. 带参构造函数:实例化时需要给类的属性赋值,实例化时一定要使传入的参数和带参构造函数的参数列表相对应
. 方法重载:是指在同一个类中,方法名相同,而参数类型和参数个数不同。在同一个类中,构造函数和变通方法都可以重载
iii. 封装:指利用抽象数据类型将数据和数据的操作结合在一起,使其构成一个不可分割的独立实体,尽可能隐藏内部的细节,只保留一些对外接口,使之与外部发生联系,保存对象自身数据的完整性和安全性
. 好处:
a. 保证数据的安全性
b. 提供清晰的对外接口
c. 类内部实现可以任意修改,不影响其他类
iv. 继承:建立类之间的关系,实现代码的利用,方便系统的扩展,继承必须符合 is a 的关系,被继承的类称为父类或者基类,继承其他类的类称为子类或者派生类
. 子类构造函数
a. 隐式调用父类构造函数
i. 创建子类对象时会首先调用父类的构造函数,然后才会调用子类本身的构造函数,由于没有指明要调用父类的哪一个构造函数,所有系统隐式地调用了父类的无参数构造函数
b. 显式调用父类构造函数
i. 通过 base 关键字调用父类的构造函数进行初始化
ii. 注意:base 关键字调用父类的构造函数时,只能传递参数
iii. 如果父类没有无参数的构造函数,那子类必须要使用 base 关键字来调用父类相应的构造函数,否则因为父类没有无参构造函数的原因而报错
. 特性:
a. 传递性:如果 A 继承 B 和 B 继承 C,则 A 也就继承了 C ,A可以访问 C 的成员
b. 单根性:一个类不能够同时继承自多个父类
. 特点:
a. 继承模拟了现实世界的关系,OOP 中强调一切皆对象,这符合我们面向对象编程的思考方向
b. 继承实现了代码的重用
c. 继承使得程序结构清晰,子类和父类的层次结构清晰
v. 多态:相同的方法调用可实现不同的实现方式
. 使用虚方法实现多态
a. 创建父类变量,用子类对象实例化这个父类变量
b. 把父类类型作为参数类型,它的子类对象作为参数传入
. 里式替换原则:子类可以替换父类并且出现在父类能够出现的任何地方,且程序的行为不会发生变化,但是反过来,父类对象是不能替换子类对象的
a. Is 关键字:用于检查对象和指定的类型是否兼容
b. as 关键字:用于两个对象之间的类型转换
. 抽象方法是一个没有实现的方法,通用在定义方法时增加关键字 abstract 可以声明抽象方法
a. 语法:访问修饰符 abstract 返回类型 方法名();
i. 注意:抽象方法没有闭合的大括号,而是直接跟了一个分号“;”,也就是说,它没有包括方法执行逻辑的方法体
b. 与虚方法的区别
虚方法 抽象方法
用 virtual 修饰 用 abstract 修饰
要用方法体,哪怕是一个分号 不允许有方法体
可以被子类 override 必须被子类 override
除了密封类外都可以写 只能在抽象类中写
. 抽象类:含有抽象方法的类必然是抽象类
a. 语法:访问修饰符 abstract class 类名;
b. 抽象类不能被实例化
c. 抽象类不能是密封或者静态的
i. 接口:接口继承允许将一个方法的名称和它的实现彻底的分离
. 语法:[访问修饰符] interface 接口名[:父接口名列表]{ //接口体 }
. 注意:
a. 接口仅仅提供成员的声明,并不提供成员的实现
b. 接口成员只能是方法、属性、索引指示器和事件,不能是常量、域、操作符、构造函数或析构函数,不能包含任何静态成员
c. 接口成员声明不能包含任何修饰符,接口成员默认访问方式是public
d. 接口类似于抽象基类,继承接口的任何非抽象类型都必须实现接口的所有成员
e. 不能直接实例化接口

C#语言-04.OOP基础的更多相关文章

  1. [分享]Ubuntu12.04安装基础教程(图文)

    [分享]Ubuntu12.04安装基础教程(图文) 原文地址: http://teliute.org/linux/Ubsetup/lesson21/lesson21.html 1.进入 live cd ...

  2. 面向对象(OOP)--OOP基础与this指向详解

      前  言            学过程序语言的都知道,我们的程序语言进化是从“面向机器”.到“面向过程”.再到“面向对象”一步步的发展而来.类似于汇编语言这样的面向机器的语言,随着时代的发展已经逐 ...

  3. [Java 教程 04] Java基础语法

    在上一篇文章中我们已经运行了个简单的java程序,但是没有给大家讲解代码部分的内容与含义.学习,我们要做到知其然而知其所以然,所以本篇文章我们就来讲解java程序的基本语法,学完这篇文章你再回头看上篇 ...

  4. awk程序设计语言之-awk基础

    awk程序设计语言之-awk基础 http://man.linuxde.net/ 常用工具命令之awk命令 awk是一种编程语言,用于在Linux/Unix下对文本和数据处理.数据可以来自标准输入(s ...

  5. Groovy语言学习--语法基础(5)

    至此groovy语言学习-语法基础就结束了,新的工作已经安排下来,要干活了. 对groovy了解到一定程度之后就可以在java项目中对其进行引入了.为此新建了一个微型的项目,个人觉得千言万语不如代码实 ...

  6. Groovy语言学习--语法基础(1)

    2018年11月末,从上家公司离职后进入现在的公司.进入项目以来,发现项目中有很多groovy脚本,以前没接触过groovy,抽时间系统地学一下,也方便后期项目的开发和维护. groovy和java的 ...

  7. Unity 3D开发-C#脚本语言的一些基础用法

    Unity 中C#语言的一些基础用法 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Lerp -- 线 ...

  8. Ext OOP基础

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. C#语言和数据库基础

    第一章 第一个C#程序 Vs2012密钥 RBCXF-CVBGR-382MK-DFHJ4-C69G8 01..net和C#的区别 大概在2000年,微软推出了一种革命性的产品--.NET(战略) 目标 ...

随机推荐

  1. 201621123023《Java程序设计》第3周学习总结

    一. 本周学习总结 写出你认为本周学习中比较重要的知识点关键词,如类.对象.封装等 关键字:面向对象,类,对象,构造函数,封装,继承 用思维导图或者Onenote或其他工具将这些关键词组织起来 二.书 ...

  2. 【Linux】CentOS7上解压zip需要安装uzip

    1.安装zip.unzip应用 yum install zip unzip 2.压缩和解压文件 以下命令均在/home目录下操作 cd /home #进入/home目录 a.把/home目录下面的my ...

  3. Java面试必问

    1. 图灵 1.1 聊聊哈希算法与HashMap 1)一个优秀的哈希算法有什么特点? 快速.不可逆.敏感性.低碰撞性 2)自己写一个Hash算法 取模 3)Java中的Hash算法 HashMap,侧 ...

  4. iOS核心动画之anchorpoint

    anchorpoint是什么 All geometric manipulations to the view occur about the specified point 就是说所有的动画参考点都是 ...

  5. ghj1222被坑记录[不持续更新]

    考试注意事项:link1 link2 (密码:wangle) 调不出来bug,可以先透彻一会儿或者是上个厕所或者坐一会别的题(间隔至少20min),然后通读代码 -1. 考试先读题,读题之后搞出一个做 ...

  6. day0203 (whil else)

    count = 0while count <= 5 : count += 1 if count == 3:break print("Loop",count) else: pr ...

  7. 大数据-hadoop HA集群搭建

    一.安装hadoop.HA及配置journalnode 实现namenode HA 实现resourcemanager HA namenode节点之间通过journalnode同步元数据 首先下载需要 ...

  8. linux内核修炼之道

    华清远见·任桥伟   人民邮电 2010 内核不学,岂能理解?今天开始正式学习内核原理 linux 发行版本Mint. cat  /etc/issue     # sudo lsb_release - ...

  9. Q806 写字符串需要的行数

    我们要把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行.我们给定了一个数组 width ...

  10. 矩阵快速幂--51nod-1242斐波那契数列的第N项

    斐波那契额数列的第N项 斐波那契数列的定义如下: F(0) = 0 F(1) = 1 F(n) = F(n - 1) + F(n - 2) (n >= 2) (1, 1, 2, 3, 5, 8, ...