C# 你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 )
你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 )
一个家庭 相当于 一个空间,这个空间里 有 很多元素,比如 爱,爱这个抽象事物,可能有很多动作,接吻、交流,对于一个爱,必须有2个人物来实现,这个就是对象。
抽象类---爱 就是 每个人都可以继承的类,但是他本身 无法实现 对象,爱可以变成一个人吗? 不能(抽象类不可以实例化)
接口---每个人对于爱的表达 可以是:接吻,交流,ML,但是每个人 交流方式 和接吻方式一样吗? 你要是想拥有爱,肯定会接吻,肯会交流,肯定会ML,这就是与接口的约定,每个人的方式不一样,这个就是 多态。
普通类---对于一个拥有爱的男人,也就是你继承了 爱的元素,你就会有它的元素。这就是继承
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading; namespace Family
{ /* 2个年轻人,
* 要想组成一个家庭必须经历
* Kiss -> talking -> Make love
* (因人而异顺序改变)
*/ //爱是每个人都配拥有的
abstract class Love
{
//字段
protected string boyName;
protected string girlName;
protected string girlBeautiful;
protected int boyAge;
protected int girlAge;
//属性
public string BoyName
{
get { return boyName; }
set { boyName = value; }
}
public int BoyAge
{
get { return boyAge; }
set { boyAge = (value >= 18) ? value : 0; }
} public string GirlName
{
get { return girlName; }
set { girlName = value; }
}
public int GirlAge
{
get { return girlAge; }
set { girlAge = (value >= 18) ? value : 0; }
} //爱的构造初始化
public Love(string boyname, int boyage)//如果男人拥有爱
{
this.BoyName = boyname;
this.BoyAge = boyage; }
public Love(string girlname, int girlage, string description)//如果女人拥有爱
{
this.GirlName = girlname;
this.GirlAge = girlage;
this.girlBeautiful = description;
} }
//经历(接口)
interface IExperience
{
void Kiss();
void Talking();
void MakeLove(); } class Boy : Love, IExperience
{
//男生的字段
private decimal boySalay;
//男生的属性收入
public decimal BoySalay
{
get { return boySalay; }
set
{ if (value >= 2000)
{
boySalay = value;
}
if (value < 2000)
{
Console.WriteLine("你的收入不够谈恋爱");
} }
}
public Boy(string boyname, int boyage, decimal salay)
: base(boyname, boyage)
{
this.BoySalay = salay;
}
//接吻
public void Kiss()
{
int status = 10; for (int i = 1; i < status; i++,status--)
{
Console.WriteLine("第{0}天:\n我:我们接吻吧,你愿意吗?", i);
Console.Write("你:");
string str = Console.ReadLine();
if (str.ToUpper() == "YES")
{
Console.WriteLine();
Console.WriteLine("恭喜你");
return;
}
else if(str=="不准")
{
Console.WriteLine("我:不放弃..."); } if (status <= 0)
{
Console.WriteLine("我:良缘难再");
} } }
//交流
public void Talking()
{
int status = 5;
for (int i = 0; i < status; i++)
{
Console.WriteLine("我:你要分手吗“");
Console.Write("你:");
string str = Console.ReadLine();
if (str.ToUpper() == "YES")
{
Console.WriteLine("我:好吧,我是孤独的!");
return;
}
else if(str=="再说")
{
Console.WriteLine("我:我懂你意思了。");
return;
}
}
} //Making Love
public void MakeLove()
{
Console.WriteLine("深夜....");
Console.WriteLine("One Night,one boy and one girl......");
}
} public class Test
{
static void Main()
{
Console.WriteLine("[2个年轻人]\n[要想组成一个家庭必须经历]\n[Kiss -> talking -> Make love]\n(因人而异顺序改变) \n");
Console.Write("恋爱进行时");
for (int i = 0; i < 10; i++)
{
Console.Write(".");
Thread.Sleep(500);
}
Console.WriteLine();
Console.Write("某天,我们能谈恋爱吗?");
for (int i = 0; i < 10; i++)
{
Console.Write(".");
Thread.Sleep(500);
}
Console.WriteLine(); Boy oneboy = new Boy("jack",20,2000);
oneboy.Kiss();
oneboy.Talking();
oneboy.MakeLove();
}
} }
C# 你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 )的更多相关文章
- 《程序员面试金典(第5版)》【PDF】下载
<程序员面试金典(第5版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382252 内容简介 本书作者Gayle Laakma ...
- Android java程序员必备技能,集合与数组中遍历元素,增强for循环的使用详解及代码
Android java程序员必备技能,集合与数组中遍历元素, 增强for循环的使用详解及代码 作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 For ...
- 【读书】PHP程序员要读的书目(不断完善中)
本文地址 分享提纲: 1. PHP 2. Linux 3. Apache/Nginx 4. Mysql 5.设计模式/架构 6. 缓存并发 7. 其他语言 8. 代码基础 9. 大前端 10. 管理生 ...
- PowerShell:Linux程序员喜欢的cmd增强版
Linux程序员有时偶尔使用Windows下的cmd工具,会被逼疯的,有些命令ls, cat, ps等已经条件反射一样使用. 但在cmd下,根本不知道该用什么命令,好在盖兹大叔照顾了此部分需求.从Vi ...
- 程序员大牛 Jeff Atwood 的两本中文书
程序员大牛,StackOverflow.com创始人之一--Jeff Atwood 英文博客:http://blog.codinghorror.com <高效能程序员的修炼>,人民邮电出版 ...
- 【Java】Java程序员面试宝典(第三版)第5章----Java程序设计基本概念
1.static静态变量,在次级作用域也可以被修改. 2.k++ + k++.第一个自加实际上只有在与计算+k++时补增.详情P36的题目. 3.Java数据类型从低到高分为(byte short c ...
- 疯狂Java:突破程序员基本功的16课-李刚编著 学习笔记(未完待续)
突破程序员基本功(16课) 数组 静态语言: 在编译的时候就能确定数据类型的语言,大多静态语言要求在使用变量之前必须声明数据类型(少数具有强推导能力的现代语言不用) 动态语言: 在程序运行时确定数据类 ...
- 99.9%的Java程序员都说不清的问题:JVM中的对象内存布局?
本文转载自公众号:石彬的架构笔记,阅读大约需要8分钟. 作者:李瑞杰 目前就职于阿里巴巴,资深 JVM 研究人员 在 Java 程序中,我们拥有多种新建对象的方式.除了最为常见的 new 语句之外,我 ...
- 很多.net 程序员不知道又非常重要的 .net高级调试技巧.调试别人的dll方法内的变量
事情是这样的, 最近需要开发Orcale的数据库. 于是使用了EF 加上 Oracle.ManagedDataAccess.Client 这个Oracle.ManagedDataAccess 很好用, ...
随机推荐
- MySQL 执行计划中Extra的浅薄理解
1.using where: Extra中出现“Using where”,通常来说,意味着全表扫描或者在查找使用索引的情况下,但是还有查询条件不在索引字段当中. 如果需要回表也是用这个. 2.usin ...
- js分页插件
//分页插件1function showView(option) { //参数定义id,页容量,当前页,总数,页总数 var id = option.id, pageSiz ...
- dubbo之延迟连接及粘滞链接接
延迟连接 延迟连接用于减少长连接数.当有调用发起时,再创建长连接.1 <dubbo:protocol name="dubbo" lazy="true" / ...
- (转)Quartz任务调度(1)概念例析快速入门
http://blog.csdn.net/qwe6112071/article/details/50991563 Quartz框架需求引入 在现实开发中,我们常常会遇到需要系统在特定时刻完成特定任务的 ...
- LeetCode--不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ).机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”).现在考虑网格中 ...
- Linux之FTP/TFTP(vsftp、vsftpd) HTTP(httpd、apache) DHCP(dhcpd)
FTP/TFTP(vsftp.vsftpd): FTP是File Transfer Protocol(文件传输协议)而中文简称为"文传协议".用于Internet上的控制文件的双向 ...
- [备忘]git常用命令
网站有点儿久没有维护(因为去做其他事情了呗),现在空下来,回来改了网站的一些东西,却忘记了git的一些常用的命令,于是便写下这篇文,方便查阅,免得每次都去看手册(毕竟我懒啊!!) 检查当前文件状态:g ...
- 第六节:pandas函数应用
1.pipe() :表格函数应用: 2.apply():表格行列函数应用: 3.applymap():表格元素应用.
- 我的ArcGis9.3 到Arcgis10.0 升级步骤
因为之前一直安装的是Arcgis 9.3 版本,领导发了个10.0版本说,该升级了,结果就开始了漫漫的升级路. 个人操作过程,只是个别. 一.卸载Arcgis9.3 这个过程真说是艰辛啊. 首先,卸载 ...
- ES6-babel转码
关于BaBel转码 有人问我babel的功能以及执行的过程和配置,在网上查阅了大量的资料~收集到这些~有错请指出,及时修改. ------------------------------------- ...