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 ...
随机推荐
- python requests 爬取数据
import requests from lxml import etree import time import pymysql import json headers={ 'User-Agent' ...
- win10 修改hosts
win10 修改hosts,是权限的问题, C:\Windows\System32\drivers\etc\hosts 添加权限即可. http://jingyan.baidu.com/article ...
- 用API处理位图
procedure TForm1.Button1Click(Sender: TObject); var dc : hdc; MemDc : hdc; MemBitmap : hBitmap; OldM ...
- JQuery:选择器、动画、AJAX请求
选择器 1.事件编程与动画效果 一个选择器可以在概念上理解为指针.借助与JQuery库中的选择器$,线程可以获取到界面元素的引用,从而可以调用 ready().click()方法把用户事件和动作方法关 ...
- set 续1
--------siwuxie095 三.用 set 实现计算 语法: SET /A expression /A 命令行开关指定等号右边的字符串为待计算的数字表 ...
- 二叉树翻转 · binary tree flipping
[抄题]: 给定一个二叉树,其中所有右节点要么是具有兄弟节点的叶节点(有一个共享相同父节点的左节点)或空白,将其倒置并将其转换为树,其中原来的右节点变为左叶子节点.返回新的根节点. 您在真实的面试中是 ...
- How to use mouse to moving windows of not have title bar?
How to use mouse to moving windows of not have title bar? #include "widget.h" #include < ...
- DSOframer 的简单介绍和资源整理(2015-09-02重新整理)
DSOframer 是微软提供一款开源的用于在线编辑 Word. Excel .PowerPoint 的 ActiveX 控件.国内很多著名的 OA 中间件,电子印章,签名留痕等大多数是依此改进而来的 ...
- Golang之函数练习
小例题: package main import "fmt" /* 函数练习, 可变参数使用 写一个函数add 支持1个或多个int相加,并返回相加结果 写一个函数concat,支 ...
- Zookeeper 源码(二)序列化组件 Jute
Zookeeper 源码(二)序列化组件 Jute 一.序列化组件 Jute 对于一个网络通信,首先需要解决的就是对数据的序列化和反序列化处理,在 ZooKeeper 中,使用了Jute 这一序列化组 ...