抽象类,有3个特点:

第1个,不能被实例化。

第2个,类中的抽象方法在继承的子类中必须重写。

第3个,类一旦有抽象方法出现,那这个类必须定义为抽象类。

现实开发中,发现有共同的代码,可以把这些共同的代码放在一个抽象类中。举个例子,计算四边形的周长。

矩形,长方形,正方形:

 class Rectangle
{
private double _A;
public double A
{
get { return _A; }
set { _A = value; }
} private double _B;
public double B
{
get { return _B; }
set { _B = value; }
} public Rectangle()
{ } public Rectangle(double a, double b)
{
this._A = a;
this._B = b;
} public double Perimeter()
{
return * (_A + _B);
}
}

Source Code

长斜方形,长菱形:

 class Rhomboid
{
private double _A;
public double A
{
get { return _A; }
set { _A = value; }
} private double _B;
public double B
{
get { return _B; }
set { _B = value; }
} public Rhomboid()
{ } public Rhomboid(double a,double b)
{
this._A = a;
this._B = b;
}
public double Perimeter()
{
return * (_A + _B);
}
}

Source Code

梯形,不等边四边形:

 class Trapezoid
{
private double _A;
public double A
{
get { return _A; }
set { _A = value; }
} private double _B;
public double B
{
get { return _B; }
set { _B = value; }
} private double _C;
public double C
{
get { return _C; }
set { _C = value; }
} private double _D;
public double D
{
get { return _D; }
set { _D = value; }
} public Trapezoid()
{ } public Trapezoid(double a,double b,double c,double d)
{
this._A = a;
this._B = b;
this._C = c;
this._D = d;
} public double Perimeter()
{
return _A + _B + _C + _D;
}
}

Source Code

从上面三个类别中,你均可以看到有一个方法,Perimeter()是计算四边形的周长。
经根博文开头所言,你可以把这个方法抽出来,放在一个抽象类中,统一接口:

public abstract class Quadrilateral
{
//周长
public abstract double Perimeter();
}

Source Code

把方法写成抽象方法之后,每个类需要继承此抽象类,并需要重写 override抽象的方法。

下面验证一下代码,如需要计算一个不规则的四边形的周长,那就是4条边相加:

在控制台运行:

C#的抽象类别的更多相关文章

  1. Verilog HDL模型的不同抽象级别

    所谓不同的抽象类别,实际上是指同一个物理电路,可以在不同层次上用Verilog语言来描述.如果只从行为功能的角度来描述某一电路模块,就称作行为模块.如果从电路结构的角度来描述该电路模块,就称作结构模块 ...

  2. php设计模式总结-工厂模式

    使用工厂模式的目的或目标? 工厂模式的最大优点在于创建对象上面,就是把创建对象的过程封装起来,这样随时可以产生一个新的对象.减少代码进行复制粘帖,耦合关系重,牵一发动其他部分代码. 通俗的说,以前创建 ...

  3. c# abstract抽象类与继承类子类的构造函数_base

    http://blog.itpub.net/9240380/viewspace-718054/ http://blog.163.com/cloud_thegreat/blog/static/10367 ...

  4. JSF标签大全详解

    1. JSF入门 藉由以下的几个主题,可以大致了解JSF的轮廓与特性,我们来看看网页设计人员与应用程序设计人员各负责什么. 1.1简介JSF Web应用程序的开发与传统的单机程序开发在本质上存在着太多 ...

  5. Windows Phone – 裁剪图片 (Crop Image)

    原文:Windows Phone – 裁剪图片 (Crop Image) 最近在处理图像的功能,对於图像的比例我也不是非常的清楚,因此,在编辑图片上花了不少时间. 该篇文章主要说明的是:如何对图片选择 ...

  6. java面向对象--抽象类和接口

    如果某个父类只知道其子类应该包含哪些方法,但无法知道如何实现这些方法,同时要使用多态的特性,怎么办? 抽象方法:关键字abstract允许在一个类中创建一个或多个没有方法体的方法--只提供方法签名,但 ...

  7. 关于Java中面向对象章节、IO 流中的重点基础知识。

    一.面向对象的三大特征,以及作用. 答:面向对象的三大特征即,封装性.继承性.多态性. 其分别的作用为 : 封装作用:将数据封装起来,提高数据的安全性, 继承作用:提高代码的复用性,减少冗余代码. 多 ...

  8. Java几种常见的设计模式

    --------------------- 本文来自 旭日Follow_24 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/xuri24/article/detail ...

  9. 【Java基础】浅谈常见设计模式

    Num1:单例模式 基本概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 常见写法: 懒汉式 public class Singleton { /* 持有私有静态实例,防止被引用,此处赋值 ...

随机推荐

  1. 移植marvell poncat3 demo板的总结

    1.arm cpu自带的bootrom, 已经初始化好串口.SPI等外设,只要硬件设置好从SPI FLASH启动,则cpu自带的bootrom会自动打印出一些信息,显示出从SPI FLASH启动,驱动 ...

  2. Python 再谈变量作用域与变量引用

    再谈变量作用域与变量引用 by:授客 QQ:1033553122 module3.py #!/usr/bin/env python # -*- coding:utf-8 -*-   __author_ ...

  3. MVC与单元测试实践之健身网站(完)-备案与部署

    主页-http://www.zhixin9001.cn/Home/Introduce GitHub- https://github.com/zhixin9001/Fitness 这是关于Fit网站的最 ...

  4. Java:[面向对象:继承,多态]

    本文内容: 继承 多态 首发时期:2018-03-23 继承: 介绍: 如果多个类中存在相同的属性和行为,可以将这些内容抽取到单独一个类中,那么多个类(子类)无需再定义这些属性和行为,只要继承那个类( ...

  5. CSS页面布局常见问题总结

    在前端开发中经常会碰到各种类型布局的网页,这要求我们对css网页布局非常熟悉.其中水平垂直居中布局,多列布局等经常会被使用到,今天就来解决一下css布局方面的问题. 水平垂直居中的几种方法 说到水平垂 ...

  6. python装饰器的实现

    说起装饰器我们可能已经很熟悉了(不了解的可以查看python基础学习——装饰器),随手就可以写一个简单的装饰器 def decorator(func): def inner(*args, **kwar ...

  7. 【待补充】[HDFS_3] HDFS 工作机制

    0. 说明 HDFS 初始化文件系统分析 && HDFS 文件写入流程 && HDFS 文件读取流程分析 有价值的相关文章: [漫画解读]HDFS存储原理 1. HDF ...

  8. Mongo学习---mongo入门1

    Docker安装以及设置mongo用户 docker pull mongo (拉取镜像 默认最新版本) docker images (查看镜像) docker run -p 27017:27017 - ...

  9. 手机上的m3u8视频(缓存)怎么转成MP4?

    一.下载M3u8合并APK,自定义扫描手机中的m3u8文件目录.选择导出的目录,可以多个同时进行m3u8的合并任务. 合并后的文件可以完整播放,但是视频时间只有前十来秒,进度无法拖动. 二.将合并好的 ...

  10. Java设计模式之四 ----- 适配器模式和桥接模式

    前言 在上一篇中我们学习了创建型模式的建造者模式和原型模式.本篇则来学习下结构型模式的适配器模式和桥接模式. 适配器模式 简介 适配器模式是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型 ...