.NET重思(二)接口和抽象类的取舍

不得不说,接口和抽象类好像啊~两者都不可以实例化,并且未实现的部分都是由派生类实现的。

他们主要有这么个区别:

(1)抽象类的派生类可以是派生类,换言之,抽象成员在派生类中不一定完全实现,而接口要求其派生类或者结构必须完全实现其成员。

(2)类只能继承一个抽象类,但是可以实现多个接口。

(3)类中可以包含字段什么的,但是接口中只包含未实现的成员,不包含字段。

(4)抽象类只能派生类,但是接口可以派生类和结构。

就我自己理解,派生类就是一组相似的类放在一起,把他们共同的成员抽出来放在基类里,以实现代码复用。有点像WinRT中的资源(Resource)或者网页中的CSS一类的。而接口就是功能的集合,我把一些类的功能暴露给你,你使用就好,不用关心他到底怎么实现的,放在一起,简洁好看。具体的,还得看。。。经验

Interface的示例上一篇写过了,这就写个抽象类的示例吧~

class Program
    {
        static void Main(string[] args)
        {
            Mengnan a = new Mengnan();
            Console.WriteLine("Mengnan实例继承的msg字段是:{0}",a.msg);
            Console.WriteLine("Mengnan实例实现的方法是:",a.getname());
            Console.WriteLine("Mengnan实例实现的属性是:", a.isMale);
        }
    }

    abstract class Person
    {
        internal string msg = "这是Person类";
        abstract public string getname();
        abstract public bool isMale
        {
            get;
        }
    }

    class Mengnan : Person
    {
        public override bool isMale
        {
            get
            {
                return true;
            }
        }

        public override string getname()
        {
            return "我是msp的梦楠姐姐";
        }
    }
时间: 2024-12-28 16:39:46

.NET重思(二)接口和抽象类的取舍的相关文章

Java接口和抽象类的区别

一 接口是什么 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现, 因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 我们使用interface来定义一个接口.接口定义类似类的定义,分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成. 定义接口的基本格式如下: [public] interface InterfaceName {//接口中的变量会被隐式地指定为public static final变量(并且

java的接口和抽象类区别

转自:深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然.今天我们就一起来学习一下Java中的接口和抽象类.下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口的区别 一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有声明,而没有具体的实现.抽象方法的声明格式

面向对象二 — — 继承、抽象类、接口

一.继承 extends 继承的特点:Java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类称为父类 1.参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载. 2.返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载. 3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private) 4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常. 用supe

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

俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 涉及到的知识点总结如下: 为什么使用接口? 接口和抽象类的区别 简单工厂模式总结 Java中new和newInstance的区别 Java的Class.forName(xxx); Java里创建对象的几个方式总结 Java类加载机制总结 Java WEB的三层架构和MVC的关系 工厂方法模式总结 抽象工厂模式总结 一道面试题的分析 一个服务提供者框架的学习 接口的另一常用法:策略模式 参考资料 先看这样一个场景:某个果园里现在有

Java面向对象----->接口和抽象类

抽象类和接口(一)在实际的项目中,整个项目的代码一般可以分为结构代码和逻辑的代码.就像建造房屋时,需要首先搭建整个房屋的结构,然后再细化房屋相关的其它的结构,也像制造汽车时,需要首先制作汽车的框架,然后才是安装配件以及美化等工作.程序项目的实现也遵循同样的道理.在项目设计时,一个基本的原则就是--"设计和实现相分离".也就是说结构代码和逻辑代码的分离,就像设计汽车时只需要关注汽车的相关参数,而不必过于关心如何实现这些要求的制作.程序设计时也是首先设计项目的结构,而不用过多的关系每个逻辑

2.35 Java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别

java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别 一.抽象 abstract作用:不能产生对象,充当父类,强制子类正确实现重写方法和类相比仅有的改变是不能产生对象,其他的都有,包括构造.属性等等任何一个类只要有一个抽象的方法就成了抽象类 抽象方法 public abstract A();①方法是抽象的,这个类也是抽象的:②子类必须重写抽象方法,除非子类也是抽象类 抽象类可以没有抽象方法,但一般不这么设计 二.接口 interface 接口也是Java的一种引用数据类型(J

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

对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然.今天我们就一起来学习一下Java中的接口和抽象类.下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口的区别 若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin0520/

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

目录 第一章 对象导论第二章 一切都是对象第三章 操作符第四章 控制执行流程第五章 初始化与清理第六章 访问权限控制第七章 复用类第九章 接口 第一章 对象导论 1. 对象的数据位于何处? 有两种方式在内存中存放对象: (1)为了追求最大的执行速度,对象的存储空间和生命周期可以在编写程序时确定,这可以通过将对象置于堆栈或者静态存储区域内来实现.这种方式牺牲了灵活性. (2)在被称为堆的内存池中动态地创建对象.在这种方式,知道运行时才知道对象需要多少对象,它们的生命周期如何,以及它们的具体类型.

java接口和抽象类

(一)接口和抽象类 作用: 1 利于设计和实现分工: 2 体现代码的层次性: (二)钩子方法或者叫模板方法方式 概念:23中设计模式中的一种,在代码执行的中间阶段,加入钩子,使得我们根据需要调用子类的不同方法,就行我们日常生活中的插座一样,如果你插上去的是电饭煲,那当然这个钩子就充当了煮饭的作用:如果你用来冲热水袋,你们它就充当了加热取暖的作用,我们在我们的某一个功能实现的过程中加入这样的钩子,那么这就是模板方法模式,它可以根据子类对这个方法(比如对于奔跑这个方法,不同子类不一样)来动态调用不同