先说一下自己对类的理解吧。类就是指将一系列具有一些共同特性的事物归纳起来,按照不同的特性分为不同的类。比如在现实世界中人是一类,动物是一类。植物 又是一类。但他们都是生命这一类的派生类。他们都继承了生命类的一些特性。但他们各自又有一些不同的属性。在计算机世界中也有这样的类。类这一特性在面向 对象的语言中就有很好的体现。

个人理解C#中的抽象类是将某些类都具有的一些特性收集起来。然后再用这个抽象类来定义一些子类。当然这些子类可以自己再扩充一些私有的属性和方法。比如 正方形和长方形他们都具有的属性是面积,周长等属性。但是他们又有一些不同的属性和方法,比如长方形有长和宽。正方形只有一个边长。他们各自的面积和周长 的计算方法也不一样。下面就举例来说明。上代码。。。

using System;
namespace ab_cl
{
    abstract class shape//定义一个抽象类( 要使用关键字abstract,不同于普通类的定义)
    {
        double area; //定义一个成员(面积)
    }
    class a:shape//定义一个长方形的类
    {
      private double length;//长方形的私有属性长
      private double width;//长方形的私有属性宽
        public a(double len, double wid)//定义一个带参的构造函数。主要用于长,宽的赋值
        {
            length = len;
            width = wid;
        }
        public double area()//用于计算长方形的面积
        {
            return length * width;
        }
        public double zhouchang()//用于计算长方形的周长
        {
            return (length + width) * 2;
        }
    }
    class b : shape//定义一个正方形的类
    {
      private double width;//定义正方形的私有属性边长
        public b(double wid)//定义一个带参的构造函数。主要用于边长的赋值
        {
            width = wid;
        }
        public double area()//计算正方形的面积
        {
            return width*width;
        }
        public double zhouchang()//用于计算正方形的周长
        {
            return width * 4;
        }
    }
    class c
    {
        static void Main()//入口函数
        {
            a t = new a(2.5, 1.2);//将长方形这个类实例化为对象
            b t1 = new b(2.5);//将正方形这个类实例化为对象
            Console.WriteLine("C#中抽象类的应用:");
            Console.WriteLine("长方形的面积是:{0}", t.area());
            Console.WriteLine("长方形的周长是:{0}", t.zhouchang());
            Console.WriteLine("正方形的面积是:{0}",t1.area());
            Console.WriteLine("正方形的周长是:{0}", t1.zhouchang());
            Console.ReadKey();
        }
    }
}

关于在C#中对抽象类的理解的更多相关文章

  1. python中对多态的理解

    目录 python中对多态的理解 一.多态 二.多态性 三.鸭子类型 python中对多态的理解 一.多态 多态是指一类事物有多种形态,比如动物类,可以有猫,狗,猪等等.(一个抽象类有多个子类,因而多 ...

  2. C++中的抽象类和接口

    1,在 C++ 语言中,并不直接支持面向对象中的抽象类和接口概念,但是 C++ 语言 却可以间接实现这些概念: 2,什么是抽象类: 1,面向对象中的抽象(其实就是分类)概念: 1,在进行面向对象分析时 ...

  3. SQL SERVER 2005/2008 中关于架构的理解(二)

    本文上接SQL SERVER 2005/2008 中关于架构的理解(一)      架构的作用与示例 用户与架构(schema)分开,让数据库内各对象不再绑在某个用户账号上,可以解决SQL SERVE ...

  4. SQL SERVER 2005/2008 中关于架构的理解(一)

    SQL SERVER 2005/2008 中关于架构的理解(一) 在一次的实际工作中碰到以下情况,在 SQL SERVER 2008中,新建了一个新用户去访问几张由其他用户创建的表,但是无法进行查询, ...

  5. 第52课 C++中的抽象类和接口

    1. 什么是抽象类 (1)面向对象中的抽象概念 思考:抽象图形中,图形的面积如何计算? (2)现实中:需要知道具体的图形类型,才能求面积. (3)Shape只是一个概念上的类型,没有具体对象 2. 面 ...

  6. C++中 类的构造函数理解(一)

    C++中 类的构造函数理解(一) 写在前面 这段时间完成三个方面的事情: 1.继续巩固基础知识(主要是C++ 方面的知识) 2.尝试实现一个iOS的app,通过完成app,学习iOS开发中要用到的知识 ...

  7. C#中实现抽象类里建立静态方法

    这篇文章主要介绍了C#中实现抽象类里建立静态方法,需要的朋友可以参考下   本文简述了C#中实现抽象类里建立静态方法的解决办法,示例程序如下: 1 2 3 4 5 6 public class Tes ...

  8. ECshop中的session机制理解

    ECshop中的session机制理解     在网上找了发现都是来之一人之手,也没有用自己的话去解释,这里我就抛砖引玉,发表一下自己的意见,还希望能得到各界人士的指导批评! 此session机制不需 ...

  9. PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结

      前  言  OOP  学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化). 1  PHP中的抽象 ...

随机推荐

  1. mysql的IFNULL()函数FLOOR(),ROUND()函数

    用法说明 1 IFNULL(expr1,expr2) 如果 expr1 不是 NULL,IFNULL() 返回 expr1,否则它返回 expr2. IFNULL()返回一个数字或字符串值,取决于它被 ...

  2. mysql 联合索引匹配原则

    读mysql文档有感 看了mysql关于索引的文档,网上有一些错误的博客文档,这里我自己记一下. 几个重要的概念 1.对于mysql来说,一条sql中,一个表无论其蕴含的索引有多少,但是有且只用一条. ...

  3. [Luogu 3973] TJOI2015 线性代数

    [Luogu 3973] TJOI2015 线性代数 这竟然是一道最小割模型. 据说是最大权闭合子图. 先把矩阵式子推出来. 然后,套路建模就好. #include <algorithm> ...

  4. String.replaceAll()方法替换字符串中的反斜杠(\)

    replaceAll()方法实际是采用正则表达式的规则去匹配的. 在regex中"\\"表示一个"\",在java中一个"\"也要用&quo ...

  5. os模块学习(转)

    python 文件操作   一.python中文件管理 文件管理是很多应用程序的基本功能和重要组成部分.Python可以使文件管理极其简单,特别是和其它语言相对比. 1.介绍 几乎以任何语言编写的众多 ...

  6. [hdu2460]network(依次连边并询问图中割边数量) tarjan边双联通分量+lca

    题意: 给定一个n个点m条边的无向图,q个操作,每个操作给(x,y)连边并询问此时图中的割边有多少条.(连上的边会一直存在) n<=1e5,m<=2*10^5,q<=1e3,多组数据 ...

  7. PHP is_null,empty以及isset,unset的区别

    1.empty 判断一个变量是否为“空”.null.false.00.0.’0′.』.为以上值的变量在检测時都将返回true. 2.isset 判断一个变量是否已经设置.0.00.’0′.』.’ ‘. ...

  8. java提取SVN提交log

    http://wiki.svnkit.com/Printing_Out_Repository_History 这个介绍的相当详细. 总之就是要使用SVNKit包,下载地址.http://svnkit. ...

  9. 【洛谷 P2756】 飞行员配对方案问题(二分图匹配,最大流)

    题目链接 这不是裸的二分图匹配吗? 而且匈牙利算法自带记录方案.. 但既然是网络流24题,那就用网络流来做吧. 具体就是从源点向左边每个点连一条流量为1的边,两边正常连边,流量都是一,右边所有点向汇点 ...

  10. python进行EDA探索性数据分析

    1.查看数据的类型概况 cols = [c for c in train.columns]   #返回数据的列名到列表里 print('Number of features: {}'.format(l ...