如果一个类不与具体的事物相联系,而只是表达一种抽象的概念,仅仅是作为其派生类的一个基类,这样的类就是抽象类,在抽象类中声明方法时,如果加上abstract时就是抽象方法

1.抽象类概述及声明

抽象类与非抽象类的主要区别:

·抽象类不能直接被实例化

·抽象类中可以包含抽象成员,但非抽象类中不可以

·抽象类不能被密封

举个小例子

public abstract class oneClass

{

  public int i;

  public void denylau()

  {

  }

}

2.抽象方法概述及声明

声明抽象方法时需注意:·抽象方法必须声明在抽象类中  ·声明抽象方法时,不能使用virtual、static、private修饰符。

在抽象类中抽象方法不提供实现。

如:

public abstract class myTestClass()

{

  public abstract void method();

}

3.抽象类与抽象方法的使用

直接举例子,讲解例子喽!

using System;
using System.Collections.Generic;
using System.Text;

namespace _
{
    public abstract class myClass
    {
        private string id = "";
        private string name = "";
        /// <summary>
        /// 编号属性及实现
        /// </summary>
        public string ID
        {
            get
            {
                return id;
            }
            set
            {
                id = value;
            }
        }
        /// <summary>
        /// 姓名属性及实现
        /// </summary>
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
        /// <summary>
        /// 抽象方法,用来输出信息
        /// </summary>
        public abstract void ShowInfo();
    }
    public class DriveClass:myClass                     //继承抽象类
    {
        /// <summary>
        /// 重写抽象类中输出信息的方法
        /// </summary>
        public override void ShowInfo()
        {
            Console.WriteLine(ID + " " + Name);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            DriveClass driveclass = new DriveClass();   //实例化派生类
            myClass myclass = driveclass;               //使用派生类对象实例化抽象类
            myclass.ID = "BH0001";                      //使用抽象类对象访问抽象类中的编号属性
            myclass.Name = "TM";                        //使用抽象类对象访问抽象类中的姓名属性
            myclass.ShowInfo();                         //使用抽象类对象调用抽象类中的的抽象方法
        }
    }
}

上例中通过派生类的对象driveclass来实例化抽象类,然后使用抽象类访问抽象类中的属性及方法。

上面这个小例子,细心的朋友会发现,怎么抽象类和我们上一篇文章讲的接口差不多吗?那么究竟抽象类和接口存在哪些区别呢?

Ok,下面就介绍下抽象类和接口的区别喽:

·它们的派生类只能继承一个基类,即只能继承一个抽象类,但是可以继承多个接口。

·抽象类中可以定义成员的实现,但接口中不可以。

·抽象类中包含字段、构造函数、析构函数、静态成员或常量等,接口中不可以。

·抽象类中的成员可以私有的(只要不是抽象的)、受保护的、内部的或受保护的内部成员,但接口中的成员必须是公共的。

PS:抽象类和接口这两种类型用于完全不同的目的。抽象类主要用作对象系列的基类,共享某些主要特性,例如共同的目的和结构。接口则主要用于类,这些类在基础水平上有所不同,但仍然可以完成某些相同的任务。

C#抽象类和抽象方法相关推荐

  1. 【C#小知识】C#中一些易混淆概念总结(七)---------解析抽象类,抽象方法

    目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...

  2. java抽象类与抽象方法详解+练习题

    抽象类与抽象方法 一.为什么使用抽象方法和抽象类 二.抽象方法 抽象方法指一些只有方法声明,而没有具体方法体的方法. 结构 abstract class 类名称 // 定义抽象类 {声明数据成员;访问 ...

  3. java中的抽象类和抽象方法

    知识点:java中的抽象类和抽象方法 关键字abstract意为抽象的,可以用来修饰类和方法,分别称作抽象类和抽象方法 抽象类一般在多态的场景中使用 一:抽象类(abstract class) 在类的 ...

  4. 二十四、深入Java抽象类,抽象方法和接口

    @Author:Runsen @Date:2020/5/31 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排 ...

  5. php抽象的案例,php抽象类和抽象方法的例子

    /** * php抽象类与抽象方法的例子 * edit: www.jbxue.com */ abstract class Animal{ function __construct($name='No- ...

  6. java中抽象类与抽象方法的使用问题

    从面向对象设计的角度来说,抽象类与抽象方法,接口都是必不可少的内容,正是这些概念以及实际运用,够成了java面向对象的核心与强大,抽象类,方法是和多态密不可分的设计范式.... 何为多态?简单的说就是 ...

  7. Java 抽象类和抽象方法

    Java 抽象类和抽象方法 抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类. 使用抽象类可以充分利用这些公共属性来提高开发和维护程序的效率. 抽象方法必须为public或prote ...

  8. 抽象类和抽象方法----java

    抽象类和抽象方法----java 抽象方法:使用abstract修饰的方法,没有方法体,只能声明.定义的是一种"规范",就是告诉子类必须要给抽象 方法提供具体的实现.抽象类:使用a ...

  9. 抽象类与抽象方法 abstrack java

    抽象类与抽象方法 abstrack java 抽象类 如果有一个类,不希望被实例化 可以通过关键字 abstract 把它变成抽象类 可以约束其他程序员的行为 抽象方法 父类的方法如果没有任何意义 可 ...

  10. 抽象类与抽象方法 c# 1613720553

    抽象类与抽象方法 c# 1613720553 如果一个类不打算实例化 它只用于提供一些子类必需实现的方法 可以考虑把它们抽象化 抽象类定义的注意事项 子类继承抽象类的注意事项 定义抽象类与抽象方法 注 ...

最新文章

  1. POJ2528 计算可见线段(线段树)
  2. Julia程序设计3 数组2 排序、复制、集合运算、字典
  3. C++中数字和字符串类型的转换
  4. Hbase2.1.0-CDH6.3.2 Region in Transition (永久RIT) 异常解决
  5. boost::safe_numerics模块测试对文字的 constexpr 操作
  6. python学习之路(九)
  7. [剑指offer]面试题16:反转链表
  8. echarts字变大_在echarts中如何调整lable的字体大小?
  9. 苹果自带相册打马赛克_如果你用苹果手机!学会这3个技巧,就能让手机变得更加好用...
  10. Knative 初体验:Serving Hello World
  11. 西湖大学生命学院章永登实验室 (超分辨成像)科研团队招聘启事
  12. 小米常程为微博文案不当道歉:今后必定谨慎言行 恳请大家持续监督
  13. 一维装箱问题 java_c语言来实现贪心算法之装箱问题
  14. Pyspark 最近使用的一些有趣姿势的梳理
  15. 在ubuntu16上新创建了一个用户,通过xrdp远程连接时出现灰屏,鼠标是“x”号
  16. Windows7 64位系统搭建Cocos2d-x 2.2.1最新版以及Android交叉编译环境(具体教程)
  17. 【问题解决方案】从 Anaconda Prompt 或 Jupyter Notebook 终端进入Python后重新退出到命令状态...
  18. BZOJ4060 : [Cerc2012]Word equations
  19. Linux——tmux和vim常用命令总结(必会)
  20. geoda权重矩阵导入matlab,geoda 导入空间权重矩阵怎么做

热门文章

  1. 7月国内手机出货量3419.9万部 5G手机果然还是很少!
  2. 硬刚华为?小米在芬兰成立相机研究公司
  3. 《上海堡垒》改编电影发布 QQ阅读披露作者江南心声
  4. 王者荣耀总决赛因天气原因延期 玩家获得皮肤碎片等补偿
  5. loadDataWithBaseURL加载HTML数据
  6. 开启事物_用一支洁面慕斯,开启精致生活
  7. 百度初级认证有用吗_知乎“打败”了百度知道吗?
  8. app接口服务器请求为什么会报错307_Vue接口代理和数据Mock,你会了吗
  9. opencv 高反差保留算法
  10. libjpeg学习3:turbojpeg试用