C# 使用抽象函数abstract
**
使用抽象函数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相关推荐
- php 类 接口的区别吗,PHP的接口类(interface)和抽象类(abstract)的区别
/** * 接口类:interface * 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类, * 那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候 ...
- 大数据Scala编程.问题集(02)
大数据Scala编程.问题集(02) by 高焕堂 洞庭国际智能硬件检测基地 & 中云大数据中心(IDC) 首席架构师 微博:@高焕堂_台北 Q-02: Scala语言的trait具有什么设计 ...
- Kotlin极简教程:第7章 面向对象编程
原文链接:https://github.com/EasyKotlin 在前面的章节中,我们学习了Kotlin的语言基础知识.类型系统.集合类以及泛型相关的知识.在本章节以及下一章中,我们将一起来学习K ...
- 【C++grammar】访问控制与抽象类与纯虚函数
目录 一.访问控制 (可见性控制) 1.private.public.protected关键字 2.关键字示例 1.关键字对类数据成员访问的限制 3. 公有继承 4. 私有继承 5. 保护继承 6. ...
- java 抽象类 方法_java 抽象类
Java为什么使用抽象类和接口 Java接口和Java抽象类代表的就是抽象类型,就是我们需要提出的抽象层的具体表现.OOP面向对象的编程,如果要提高程序的复用率,增加程序的可维护性,可扩展性,就必须是 ...
- matlab中符号对象的数据类型是,符号对象(Symbolic Object)的使用
符号对象是什么?符号对象是Matlab中一种特殊的数据类型, 其实质是"a data structure that stores a string representation of the ...
- [C++] - 纯虚函数 抽象基类 接口类
翻译自:https://www.learncpp.com/cpp-tutorial/126-pure-virtual-functions-abstract-base-classes-and-inter ...
- Java基础教程(全代码解析)
字面量: 整数字面量为整型(int) 小数字面量为双精度浮点型(double) 数据类型: byte short int long float double 接下来代码展示理解 public clas ...
- 【Unity】Unity、C#面试题目记录和解答
前言 持续更新中... 面向阅读者:unity面试者 阅读提示:一般面试中,不会问以下所有类型的问题,例如你选择做ui才需要回答UGUI分类的问题 Unity基础 基础(点我) Q:Unity的Mon ...
最新文章
- NeHe OpenGL教程 第四十课:绳子的模拟
- oracle11g程序调优纪实
- 什么是正确的JSON内容类型?
- ccf-csp #201909-2 小明种苹果(续)
- 【转载】分布式事务 介绍
- SqlException (0x80131904): 将截断字符串或二进制数据。
- bzoj1037[ZJOI2008]生日聚会Party dp
- 01-09 Linux三剑客-sed
- React组件之间的通信
- 求三点外接圆圆心公式
- cmake:指定find_package的搜索路径
- html怎么让滚动条不占位置,css怎么设置滚动条不占宽度?
- 如何在自己设置家里的路由器DNNS,并实现远程管理路由器。
- SGE集群系统了解与常用操作命令
- PLSQL--表空间管理
- 程序员的自我修养——链接、装载与库
- win7如何创建宽带连接
- 你是工作狂?也许你只是”工作上瘾“了
- 三:Lambda表达式
- 关于AD17 原理图设置差分出现Number of nets in differential pair ** is 1 instead of 2的问题