3-C#面向对象概念
本篇博客对应视频讲解
回顾
前两篇博文带大家快速的感知一下使用C#编写程序是怎样的过程,能实现什么样的功能。同时也提到了面向对象的概念。本篇文章就是更加详细的去将面向对象编程中常见的概念进行示例说明,以帮助大家更好的理解这种编程模式。
理解面向对象
讲概念的话,最好的方式还是去查看官方的文档,大概目录如下:
基本概念
- 类和对象
- 类成员
- 属性和字段
- 方法
- 构造函数
- 嵌套类
- 访问修饰符和访问级别
- 实例化类
- 静态类和成员
- 匿名类型
- 类成员
- 继承
- 重写成员
- 接口
- 泛型
- 委托
讲概念是我一直不喜欢做的事情,因为概念是总结出来的,是通过大量实践总结出来的。我们应该是先积累经验,然后总结出概念,这样才能更好的去理解。单纯只讲概念,抽象又无法理解,是没什么效果的。
所以,我还是通过实际的示例带大家理解一下相关的概念。建议大家最好观看本篇博客关联的视频。而博客内容就不把这些概念一一"复制"过来了,因为所有的讲解都是基于语言层面上来说明的,对我们理解这些概念并没有什么大的帮助。
继承
就像我们自然界当中分类一样。继承就是一层一层的抽象,从整体到个体的表示。把相同的属性行为抽象出来作为父类,一层一层的直到个体。
动物->猫->橘猫

代码示例:
定义动物类:
/// <summary>
/// 动物类
/// </summary>
class Animal
{
public string Name { get; set; }
public Animal()
{
}
public Animal(string name)
{
Name = name;
}
public virtual void Eat(string sth = "食物")
{
Console.WriteLine($"{Name}吃{sth}");
}
}
在定义猫类,继承动物
class Cat : Animal
{ public string Eye { get; set; } public Cat()
{
Name = "猫";
} public void Sleep()
{
Console.WriteLine($"{Name}在睡觉");
} /// <summary>
/// 改写父类的Eat方法
/// </summary>
/// <param name="sth"></param>
public override void Eat(string sth="食物")
{
if (sth== "甜食")
{
Console.WriteLine($"喵星不吃甜食");
}
else
{
base.Eat(sth);
}
}
}
接口
接口,我们可以理解为定义标准或规范。
比如我们有两个接口,分别是国内规范和国际规范,国内规范中定义一个方法叫VisitChinaInternet(),国际规范定义一个方法叫VisitInternet();
那我们可以定义一个类叫ChinaCitizen,那么这个类继承国内规范。就必需要实现VisitChinaInter()方法。这样就可以使所有的ChinaCitizen通过这个方法去访问互联网,经过防火墙。
代码示例:
定义接口:
interface IChina
{
/// <summary>
/// 访问国内互联网
/// </summary>
void VisitChinaInternet();
}
interface IWorld
{
/// <summary>
/// 访问互联网
/// </summary>
void VisitInternet();
}
实现接口的类:
/// <summary>
/// 国内公民
/// </summary>
public class ChinaCitizen : IChina
{
public void VisitChinaInternet()
{
Console.WriteLine("访问国内互联网,无法访问google!");
}
public void VisitInternet()
{
Console.WriteLine("访问国际互联网");
}
}
/// <summary>
/// 世界公民
/// </summary>
class EarthCitizen : IWorld
{
public void VisitInternet()
{
Console.WriteLine("访问国际互联网");
}
}
特别提示:
我们通过现实中的事物去理解编程中抽象的概念,还是需要大家自我实践,亲身去体会。概念不是不重要,而是一个先后顺序的问题。只实践不总结是无法成体系的,难以进步。所以大家看了视频之后,再去看文档,这两者缺一不可。先实践再看概念会有更好理解。
3-C#面向对象概念的更多相关文章
- delphi 基础之二 面向对象概念初步
面向对象概念初步 •类自动生成 快捷键:ctrl+shift+c 1.类的定义 类是用户创建的数据类型,包括状态.表达式和一些操作.有3个组成部分,即字段.方法和属性.字段是类的内部数据变量,方法就是 ...
- C#入门(面向对象概念)
也许是看概念性的东西太多了,所以一看基本就明白,但实际并没有掌握,有待实操.反而是UML(统一建模语言)引起了我的兴趣,发现这东东很像建筑行业的图纸:有标准和约定,很方便专业人士看懂程序的架构和逻辑. ...
- O-C相关-03:面向对象概念的具体介绍
1.面向对象的概念 面向对象(object-oriented ;简称: OO) 至今还没有统一的概念,我这里把它定义为:按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世 ...
- 《Java从入门到放弃》JavaSE入门篇:面向对象概念(入门版)
要知道什么是面向对象,你首先要有个对象吧,所以······没有对象的可以回家洗洗睡了· 好吧,前面是开玩笑,要说明什么是面向对象,我们还是先 例子: 小呆:"小傻,你今天早餐吃的什么?&qu ...
- 面向对象【day07】:面向对象概念介绍(二)
本节内容 1.概念 2.特性 3.面向对象介绍 一丶概念 1.面向对象编程 OOP(Object-Oriented Programming)编程是利用“类”和“对象”来创建各种模型来实现对真实世界的描 ...
- Python入门之面向对象编程(一)面向对象概念及优点
概念 谈到面向对象,很多程序员会抛出三个词:封装.继承和多态:或者说抽象.一切都是对象之类的话,然而这会让初学者更加疑惑.下面我想通过一个小例子来说明一下 面向对象一般是和面向过程做对比的,下面是一个 ...
- Java基础教程(4)--面向对象概念
如果你之前从来没有使用过面向对象编程语言,那么在学习Java之前需要先理解几个有关面向对象编程的基本概念.这篇教程将会向你介绍对象.类.集成.接口和包的概念,以及这些概念是如何与现实世界相关联,并 ...
- java面向对象概念1
一.java面向对象学习的三条主线: 1.java类及类的成员:属性.方法.构造器:代码块.内部类 2.面向对象的三大特征:封装性.继承性.多态性.(抽象性) 3.其它关键字:this.super.s ...
- js面向对象概念解析
ECMAScript有两种开发模式: 1.函数式(过程化) 2.面向对象(OOP). 面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是,ECMAScri ...
随机推荐
- ES6系列_9之对象
1.对象赋值 es5中的对象赋值方式如下: let name="小明"; let skill= 'es6开发'; var obj= {name:name,skill:skill}; ...
- mock 的独立使用
public class Air21QueryMileStoneJobTest{ @InjectMocks Air21QueryMileStoneJob air21QueryMileStoneJob ...
- Spring IO Platform介绍
为什么要用Spring IO Platform 今天无意间看到了一个关键词:"Spring IO Platform",第一直觉是不是有关于IO方面的框架或者包呢,查了一下,居然是为 ...
- idea git 操作
工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小袁 场景一:小张创建项目并提交到远程Git仓库 场景二:小袁从远程Git仓库上获取项目源码 场景三:小 ...
- 在VMware Workstation中安装Ubuntu Server 16.04.5图解教程
最近要在Ubuntu中部署openstack,为了节省空间和内存,最终选择了Ubuntu服务器.看了很多前辈和大佬的安装教程,在这里记录一下我自己的Ubuntu Server 16.04.5的安装过程 ...
- java把流抛给浏览器下载时,当下载的文件文件名为中文时,出现中文名被替换为“----------”的情况
比如说,下载的文件名为: 软件分析报告.docx,当使用流抛给浏览器下载时,浏览器下载的文件为:-----------.docx 出现这种情况的原因:大体的原因就是header中只支持ASCII,所以 ...
- IDEA07 快捷键统计插件之Key Promoter X
1 官方介绍 该插件会统计你鼠标操作的次数,然后在一个窗口中展示出来 https://plugins.jetbrains.com/plugin/9792-key-promoter-x 2 下载.安装. ...
- 在Linux下删除文件及文件夹(rm)
删除目录.文件 rm(remove) 功能说明:删除文件或目录.语 法:rm [-dfirv][--help][--version][文件或目录...]补充说明:执行rm指令可删除文件或目录,如欲删除 ...
- git 常见报错
1. refusing to merge unrelated histories : 拒绝合并无关的历史 teminal中输入 git pull origin master --allow-unrel ...
- Linux --centos7 开机启动设置
以Linux下指定sun用户在linux开机时执行/home/sun/startrun.sh为例: 以root登录linux 执行vi /etc/rc.d/rc.local 在文档末尾添加一行语句:s ...