你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 )

 

一个家庭 相当于 一个空间,这个空间里 有 很多元素,比如 爱,爱这个抽象事物,可能有很多动作,接吻、交流,对于一个爱,必须有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#

C# 你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 )的更多相关文章

  1. 《程序员面试金典(第5版)》【PDF】下载

    <程序员面试金典(第5版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382252 内容简介 本书作者Gayle Laakma ...

  2. Android java程序员必备技能,集合与数组中遍历元素,增强for循环的使用详解及代码

    Android java程序员必备技能,集合与数组中遍历元素, 增强for循环的使用详解及代码 作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 For ...

  3. 【读书】PHP程序员要读的书目(不断完善中)

    本文地址 分享提纲: 1. PHP 2. Linux 3. Apache/Nginx 4. Mysql 5.设计模式/架构 6. 缓存并发 7. 其他语言 8. 代码基础 9. 大前端 10. 管理生 ...

  4. PowerShell:Linux程序员喜欢的cmd增强版

    Linux程序员有时偶尔使用Windows下的cmd工具,会被逼疯的,有些命令ls, cat, ps等已经条件反射一样使用. 但在cmd下,根本不知道该用什么命令,好在盖兹大叔照顾了此部分需求.从Vi ...

  5. 程序员大牛 Jeff Atwood 的两本中文书

    程序员大牛,StackOverflow.com创始人之一--Jeff Atwood 英文博客:http://blog.codinghorror.com <高效能程序员的修炼>,人民邮电出版 ...

  6. 【Java】Java程序员面试宝典(第三版)第5章----Java程序设计基本概念

    1.static静态变量,在次级作用域也可以被修改. 2.k++ + k++.第一个自加实际上只有在与计算+k++时补增.详情P36的题目. 3.Java数据类型从低到高分为(byte short c ...

  7. 疯狂Java:突破程序员基本功的16课-李刚编著 学习笔记(未完待续)

    突破程序员基本功(16课) 数组 静态语言: 在编译的时候就能确定数据类型的语言,大多静态语言要求在使用变量之前必须声明数据类型(少数具有强推导能力的现代语言不用) 动态语言: 在程序运行时确定数据类 ...

  8. 99.9%的Java程序员都说不清的问题:JVM中的对象内存布局?

    本文转载自公众号:石彬的架构笔记,阅读大约需要8分钟. 作者:李瑞杰 目前就职于阿里巴巴,资深 JVM 研究人员 在 Java 程序中,我们拥有多种新建对象的方式.除了最为常见的 new 语句之外,我 ...

  9. 很多.net 程序员不知道又非常重要的 .net高级调试技巧.调试别人的dll方法内的变量

    事情是这样的, 最近需要开发Orcale的数据库. 于是使用了EF 加上 Oracle.ManagedDataAccess.Client 这个Oracle.ManagedDataAccess 很好用, ...

随机推荐

  1. React Native真机调试安卓版

    React Native真机调试安卓版 一.准备工作 1.1 环境搭建 React Native中文网的文档已经非常清晰地描述了,按照步骤即可.http://reactnative.cn/docs/0 ...

  2. CORNERSTONE在线敏捷开发工具这么强大,除了推荐,我别无选择

    刚接到一个新项目,完全找不到思路, 怎么办? 任务分工不明,成员相互推诿, 怎么办? 编制的工作计划,老挨产品经理批, 怎么办? 时间短,任务紧,进度与时间两难控制, 怎么办? ...... 别着急, ...

  3. c++ map迭代器

    #include <stdio.h> #include <map> using namespace std; int main(){ map<int, int> m ...

  4. swift-延时加载函数

    //延时加载函数 func delayLoad(){ let time: NSTimeInterval = 2.0 let delay = dispatch_time(DISPATCH_TIME_NO ...

  5. postgres主从配置

    运维开发技术交流群欢迎大家加入一起学习(QQ:722381733) 开始部署postgres主从(如果没不会安装postgres的请去上一个博文中查看) 这里我使用了两台服务器部署 主:192.168 ...

  6. centos 7中 yum安装jdk

    yum安装jdk的好处就是不需要手动再配置环境变量,所有的变量都是自动生成 1.检查系统是否存在jdk,存在删除原版jdk 如果没有信息输出,则表示没有安装jdk rpm -qa |grep java ...

  7. wget扒网站

    wget神奇操作   整站复制 只限静态网页 wget -P 指定下载路径 -p 获取显示HTML页面所需的所有图像 -k  使链接指向本地文件 -H  递归时转到外部主机. wget --mirro ...

  8. 1. Python中的基本数据类型、运算、变量

    本文利用的是Python 3.x版本,建议学习3.x版本 Python中的基本数据类型.运算.变量 1. 基本数据类型 1.1 整数 py可以处理任意大小的整数,例如123,1234567891324 ...

  9. ubuntu_linux /boot/grub/grub.conf

    ==========================================UBUNTU  /boot/grub/grub.conf文件============================ ...

  10. kafka监控工具kafka-manager

    1.几个kafka监控工具 Kafka Web Console:监控功能较为全面,可以预览消息,监控Offset.Lag等信息,但存在bug,不建议在生产环境中使用. Kafka Manager:偏向 ...