**
使用抽象函数abstract
作者:秋名
撰写时间:2020 年05 月23日
多态的作用: 把不同的子类对象当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化**

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _抽象类实现多态案例
{class Program{//开发当中,尽量用抽象,不要用具体。能用父类就不用子类。能用抽象的父类就不用具体的父类。能用接口,就不用抽象static void Main(string[] args){#region 抽象案例一//Student s = new Student();//Person p = new Student();//p.SayHi();//p.Standup();//Person T = new Teacher();//T.SayHi();//T.Standup();#endregion#region 抽象案例二//练习1:动物Animal 都吃Eat的方法和Bark()叫,狗Dog和猫Cat叫的方法都不一样,父类中没有默认的实现,所以考虑用抽象方法。//Animal D = new Dog();//D.Eat();//D.Bark();//Animal C = new Cat();//C.Eat();//C.Bark();//练习2:计算形状Shape(圆Circle,矩形Square,正方形Rectangle)的面积、周长//圆的周长=圆周率×直径 公式:c=πd =2πr//圆的面积=半径×半径×π 公式:S=πrr//矩形的周长=2*(长+宽)公式:L=2(a+b)//矩形的面积 =长*宽 公式:S=a×b//正方形的周长 = 边长×4 //正方形的面积 = 边长×边长Shape shape = new Rectangle(40);//new Square(100, 20); //new Circle(20);Console.WriteLine("周长:{0}",shape.Girth());Console.WriteLine("面积:{0}",shape.Area());#endregionConsole.ReadKey();}}#region 抽象案例1//抽象父类abstract class Person{public abstract void SayHi();public abstract void Standup();}//抽象学生类class Student : Person{public override void SayHi(){Console.WriteLine("我是学生。");}public override void Standup(){Console.WriteLine("一位好学生");}}//抽象教师class Teacher : Person{public override void SayHi(){Console.WriteLine("我是老师,");}public override void Standup(){Console.WriteLine("一位好老师");}}#endregion#region 抽象案例2—练习一abstract class Animal{public abstract void Eat();public abstract void Bark();}class Dog:Animal{public override void Eat() {Console.WriteLine("狗吃骨头!");}public override void Bark(){Console.WriteLine("汪汪汪!");}}class Cat : Animal{public override void Eat(){Console.WriteLine("狗吃鱼!");}public override void Bark(){Console.WriteLine("喵喵喵!");}}#endregion#region 抽象案例2—练习二abstract class Shape{public abstract double Area();//面积public abstract double Girth();//周长}//定义圆的类(求周长和面积)class Circle : Shape{public Circle(double r){this.R = r;}public double R { get; set; }public override double Area(){return Math.PI * this.R * this.R;}public override double Girth(){return 2 * Math.PI * this.R;}}//定义矩形的类(求周长和面积)class Square : Shape{public Square(double length, double Width){this.length = length;this.Width = Width;}public double length { get; set;}public double Width { get; set; }public override double Area(){return length * Width;}public override double Girth(){return (length + Width) * 2;}}//定义正方形的类(求周长和面积)class Rectangle:Shape{public double Bian { get; set;}public Rectangle(double Bian){this.Bian = Bian;}public override double Area(){return Bian * Bian;}public override double Girth(){return Bian * 4;}}#endregion
}

C# 使用抽象函数abstract相关推荐

  1. php 类 接口的区别吗,PHP的接口类(interface)和抽象类(abstract)的区别

    /** * 接口类:interface * 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类, * 那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候 ...

  2. 大数据Scala编程.问题集(02)

    大数据Scala编程.问题集(02) by 高焕堂 洞庭国际智能硬件检测基地 & 中云大数据中心(IDC) 首席架构师 微博:@高焕堂_台北 Q-02: Scala语言的trait具有什么设计 ...

  3. Kotlin极简教程:第7章 面向对象编程

    原文链接:https://github.com/EasyKotlin 在前面的章节中,我们学习了Kotlin的语言基础知识.类型系统.集合类以及泛型相关的知识.在本章节以及下一章中,我们将一起来学习K ...

  4. 【C++grammar】访问控制与抽象类与纯虚函数

    目录 一.访问控制 (可见性控制) 1.private.public.protected关键字 2.关键字示例 1.关键字对类数据成员访问的限制 3. 公有继承 4. 私有继承 5. 保护继承 6. ...

  5. java 抽象类 方法_java 抽象类

    Java为什么使用抽象类和接口 Java接口和Java抽象类代表的就是抽象类型,就是我们需要提出的抽象层的具体表现.OOP面向对象的编程,如果要提高程序的复用率,增加程序的可维护性,可扩展性,就必须是 ...

  6. matlab中符号对象的数据类型是,符号对象(Symbolic Object)的使用

    符号对象是什么?符号对象是Matlab中一种特殊的数据类型, 其实质是"a data structure that stores a string representation of the ...

  7. [C++] - 纯虚函数 抽象基类 接口类

    翻译自:https://www.learncpp.com/cpp-tutorial/126-pure-virtual-functions-abstract-base-classes-and-inter ...

  8. Java基础教程(全代码解析)

    字面量: 整数字面量为整型(int) 小数字面量为双精度浮点型(double) 数据类型: byte short int long float double 接下来代码展示理解 public clas ...

  9. 【Unity】Unity、C#面试题目记录和解答

    前言 持续更新中... 面向阅读者:unity面试者 阅读提示:一般面试中,不会问以下所有类型的问题,例如你选择做ui才需要回答UGUI分类的问题 Unity基础 基础(点我) Q:Unity的Mon ...

最新文章

  1. NeHe OpenGL教程 第四十课:绳子的模拟
  2. oracle11g程序调优纪实
  3. 什么是正确的JSON内容类型?
  4. ccf-csp #201909-2 小明种苹果(续)
  5. 【转载】分布式事务 介绍
  6. SqlException (0x80131904): 将截断字符串或二进制数据。
  7. bzoj1037[ZJOI2008]生日聚会Party dp
  8. 01-09 Linux三剑客-sed
  9. React组件之间的通信
  10. 求三点外接圆圆心公式
  11. cmake:指定find_package的搜索路径
  12. html怎么让滚动条不占位置,css怎么设置滚动条不占宽度?
  13. 如何在自己设置家里的路由器DNNS,并实现远程管理路由器。
  14. SGE集群系统了解与常用操作命令
  15. PLSQL--表空间管理
  16. 程序员的自我修养——链接、装载与库
  17. win7如何创建宽带连接
  18. 你是工作狂?也许你只是”工作上瘾“了
  19. 三:Lambda表达式
  20. 关于AD17 原理图设置差分出现Number of nets in differential pair ** is 1 instead of 2的问题

热门文章

  1. 百度AI图片识别亲测成功详解
  2. html5设备面板 twaver,TWaver可视化编辑器(二)3D编辑器
  3. 翻译mos文章 scn headroom ID 1376995.1
  4. Java下载海康历史视频并合并转码
  5. python 3.x 163邮箱登陆,邮件读取
  6. 女人没嫁出去的极端理由
  7. shader-颜色的计算
  8. 伴娘礼服上的年华(四)
  9. 微信小程序 swiper 自定义组件
  10. PHP的化学名是啥,科学网—化学名称简写 - 桂耀荣的博文