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 ...
随机推荐
- 将jar包安装到maven仓库
<!-- https://mvnrepository.com/artifact/ojdbc/ojdbc --><!-- (参数一):下载到本地的ojdbc-10.2.0.4.0.ja ...
- ubantu环境下fidder安装
转自:http://www.cnblogs.com/jcli/p/4474332.html Linux(Ubuntu)环境下使用Fiddler 自己的开发环境是Ubuntu, 对于很多优秀的软件但是又 ...
- linux版飞信安装
下载安装包; http://www.it-adv.net/fetion/libraryrh4x32.tar.gz [支持库] http://www.it-adv.net/fetion/downloa ...
- Python 测试题目-1
l1 = [11,22,33]l2 = [22,33,44] # 1.获取内容相同的两个元素# 2.获取l1中有l2没有的元素# 3.获取l2中有l1中没有的元素# 4.获取l1 l2中内容都不通的元 ...
- eclipse liquibase 插件
http://marketplace.eclipse.org/category/free-tagging/liquibase http://marketplace.eclipse.org/market ...
- Spring Boot实践——Spring Boot 2.0 新特性和发展方向
出自:https://mp.weixin.qq.com/s/EWmuzsgHueHcSB0WH-3AQw 以Java 8 为基准 Spring Boot 2.0 要求Java 版本必须8以上, Jav ...
- Git----远程仓库之添加远程库02
现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub上创建一个Git库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举 ...
- lombok 注解使用
需要引入: <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok&l ...
- 使用ES-Hadoop 6.5.4编写MR将数据索引到ES
目录 1. 开发环境 2. 下载地址 3. 使用示例 4. 参考文献 1. 开发环境 Elasticsearch 6.5.4 ES-Hadoop 6.5.4 Hadoop 2.0.0 2. 下载地址 ...
- ubuntu17.10 安装CUDA
1. 更新apt-get源列表 sudo apt-get update sudo apt-get upgrade 2. 添加驱动源 sudo add-apt-repository ppa:graphi ...