抽象类中可以有构造函数(无参构造函数和有参构造函数)
无参构造函数在子类实例化时被调用
有参构造函数必须显示调用

抽象类中可以有抽象方法 但是不能有方法体,子类必须实现抽象方法
子类必须重写抽象类中的抽象方法,不能用new

抽象类中可以有虚方法,虚方法必须有方法体
子类继承抽象类,可以重写(override)和覆盖(new)抽象类中的虚方法也可以什么都不做。
但二者(override、new)不能同时做,只能选其一

注:new是隐藏基类方法,override重写了基类的方法,即便转为基类对象调用的也是派生类的重写方法

    public abstract class C
{
public string strAbs;
protected C()
{
Console.WriteLine("abstract class C");
} // 子类显示调用才会执行有参构造函数
protected C(string str)
{
strAbs = str;
} public void Method1()
{
Console.WriteLine("abstract class:method");
} //public void Method2();错误的写法 抽象类中的方法必须有方法体
public void Method2()
{
//有方法体,可以没有具体实现
}
//抽象类中可以有抽象方法,但是抽象方法不能有方法体,也就是没有实现部分
public abstract void Mehod3(); // public virtual void Method4();错误的写法:抽象类中的虚方法必须有方法体
public virtual void Method4()
{
Console.WriteLine("abstract class virtual method");
}
} public abstract class E:C
{
/// <summary>
/// 子类实例化时会先走父类无参构造函数
/// </summary>
protected E()
{
Console.WriteLine("abstract class E");
} /// <summary>
/// 子类显示调用才会执行有参构造函数
/// </summary>
/// <param name="str"></param>
protected E(string str)
{
this.strAbs = str;
} //子类继承抽象类,必须重写抽象类中的抽象方法
public override void Mehod3()
{ } //子类继承抽象类,对于抽象类的虚方法,要么用重写(override)要么用new覆盖,二者只能选其一
public override void Method4()
{
Console.WriteLine("E:C override method");
}
//public new void Method4()
//{
// Console.WriteLine("E:C new method");
//}
} public class F:E
{
//显示调用父类有参构造函数
public F(string str):base(str)
{
strAbs = str;
}
}

实例代码

接口中的方法不能有方法体,不能有抽象方法
接口是一组行为规范和规则
子类实现接口,必须实现接口中的所有方法
所以定义接口时,接口中的规则尽量单一,做到一个接口只有"一类"规则
这也说明接口是高度抽象的,高度概括,真正做到求同"除异"的

抽象类的作用
抽象类主要用于代码的复用
接口的用法
接口的使用主要体现了面向对象的多态

C#拾遗-接口与抽象类的更多相关文章

  1. [Think In Java]基础拾遗1 - 对象初始化、垃圾回收器、继承、组合、代理、接口、抽象类

    目录 第一章 对象导论第二章 一切都是对象第三章 操作符第四章 控制执行流程第五章 初始化与清理第六章 访问权限控制第七章 复用类第九章 接口 第一章 对象导论 1. 对象的数据位于何处? 有两种方式 ...

  2. 从接口、抽象类到工厂模式再到JVM来总结一些问题

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 涉及到的知识点总结如下: 为什么使用接口? 接口和抽象类的区别 简单工厂模式总结 Java中new和newInstance的区别 J ...

  3. (转)深入理解Java的接口和抽象类

    原文地址: http://www.cnblogs.com/dolphin0520/p/3811437.html 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP ...

  4. c++ 接口和抽象类

    其实对抽象类与接口的区别一直是搞不太清楚,最近正在学习<设计模式>,期间用到了很多c++多态的知识.这是才恍然发现,是应该整理下这方面的知识了.但在翻阅书本.上网查阅资料之际,发现有篇文章 ...

  5. android中接口和抽象类的区别

    最近发现很多基础有点生疏了,特地写一点博客来巩固一下.今天主要来谈谈接口和抽象类的区别,我们在项目的很多地方都会用到接口或者抽象类,但是它们之间的一些区别和相同点不知道大家有没有注意到,还有就是,什么 ...

  6. 深入理解Java的接口和抽象类(转)

    深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...

  7. c#接口与抽象类的区别

    abstract 修饰符用于表示所修饰的类是不完整的,并且它只能用作基类.抽象类与非抽象类在以下方面是不同的: 抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误.虽然一些变量和值在编 ...

  8. Java接口和抽象类的区别

    今天看到项目中,写了一个抽象类,里面有很多方法继承了这类,当调用这个接口时,采用的是这个抽象类去调方法的,当时一想,这个不就是我们说的Java的多态的特征: 继承:存在继承关系的子类和父类 重写:子类 ...

  9. 深入理解Java的接口和抽象类

    深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...

随机推荐

  1. nginx + tomcat配置负载均衡

    目标:Nginx做为HttpServer,连接多个tomcat应用实例,进行负载均衡. 注:本例程以一台机器为例子,即同一台机器上装一个nginx和2个Tomcat且安装了JDK1.7. 1.安装Ng ...

  2. DES & 3DES 加密算法

    JAVA坑 跟其他公司java的对接口,一个细节对到吐血,具体: DesUtil.java(别人的反例) //package base_class; import java.io.IOExceptio ...

  3. JavaScript 加载动画Canvas 设计

    var c = document.getElementById('c'), ctx = c.getContext('2d'), cw = c.width = 400, ch = c.height = ...

  4. mysql 在windows下,使用 net start mysql 命令发生错误 服务名无效 或 1067

    mysql 在windows下,使用 net start mysql 命令发生错误 :服务名无效 或 1067  先使用mysqld -install安装一下 删除data目录下的日志等文件(因为之前 ...

  5. iOS 多线程

    一 多线程基础 1.进程:进程就是系统中正在运行的应用程序.每个进程是相互独立的且都运行在各自受保护的运行空间内. 比如同时打开迅雷.Xcode,系统就会分别启动2个进程. 2.线程:进程在执行任务是 ...

  6. 解决SprngMVC中ResponseBody注解中文乱码

    配置文件前面加入如下结构,版本号3.2.5 <bean class="org.springframework.web.servlet.mvc.method.annotation.Req ...

  7. 常用MIME类型(Flv,Mp4的mime类型设置)(转载)

    转载地址:http://www.cuplayer.com/player/Help/2011/0625/83.html 也许你会在纳闷,为什么我上传了flv或MP4文件到服务器,可输入正确地址通过htt ...

  8. Linux网络管理1---(Linux配置IP地址,ifconfig、配置文件)

    1.Linux配置IP 地址 ifconfig命令临时配置IP 地址 ifconfig命令,最常用的功能是查看本机的网络的配置状态(当然也可以配置网络,不过是暂时性的),直接输入ifconfig命令就 ...

  9. Power BI for Office 365(二)Power Query

    在上一篇中我们看到了Power BI在移动端的支持,从这一篇起降依次介绍Power BI中的各个功能组件,此篇讲通过一个故事来介绍如何在Power Query中获取并且组织数据. 在这个系列中,我们将 ...

  10. asp.net c# 网上搜集面试题目大全(附答案)

    1.String str=new String("a")和String str = "a"有什么区别? String str = "a"; ...