一:接口 1:类是单继承,接口是多继承。 2:接口中不能有属性,不能有方法体。 3:接口不能被实例化,只能被继承。 4:接口中的所有定义,必须在子类中全部实现。 二:抽象方法 1:含有抽象方法的类,是抽象类。 2:抽象类不能被实例化,只能被继承。 3:抽象方法不能有方法体。 4:抽象方法必须在子类中 ...
大话设计模式 大话设计模式第一章之:工厂模式 客套话: 程序能运行不一定是最优的。 可维护,可扩展,可复用,灵活性好,避免重复(可以多一个环节来排除重复) 业务逻辑与界面逻辑的分开 类与对象 抽象类,虚方法实现不同功能 如调用不同功能,要使用不同类吗,只要使用一个基类,用swicth判断要使用什么功 ...
分类:
其他好文 时间:
2016-06-12 18:41:49
阅读次数:
161
1 接口 类的接口 (interface) 就是该类允许其他类对象访问的方法和字段的集合。接口作为对象必须实现的承诺。接口永远不可能被实例化为对象,因此只能定义虚方法和常量字段。 作用: 限制了对象之间的交互(交互可以只用interface来完成,interface进行限制) 与抽象类的区别: 一个 ...
分类:
其他好文 时间:
2016-06-12 18:16:54
阅读次数:
164
虚方法和抽象方法都可以供派生类重写,它们之间有什么区别呢? 1. 虚方法必须有实现部分,并为派生类提供了重写该方法的选项。抽象方法没有提供实现部分,抽象方法是一种强制派生类重写的方法,否则派生类将不能被实例化 2. 抽象方法只能在抽象类中声明, 抽象方法必须在派生类中重写。虚方法不是也不必要重写。其 ...
1.重载:重载是在一个类中,函数名一样,参数类型或参数个数不同的一系列函数需要注意的是,与返回类型无关。 2.重写我们比较熟悉的另一个词是“覆盖”用在继承中,子类若没有重新定义父类的虚方法,则子类对象调用该方法时,使用的仍是父类的方法;否则,子类覆盖了父类的虚方法,调用时使用的是重新定义的方法。 输 ...
分类:
编程语言 时间:
2016-06-05 06:32:42
阅读次数:
280
本节介绍继承实现的基本原理,类在内存中包括哪些信息?对象创建的过程?对象的内存布局?动态绑定是如何实现的?虚方法表是什么? ... ...
分类:
其他好文 时间:
2016-05-30 10:11:12
阅读次数:
275
CLR最重要的特性之一就是类型安全的。在运行时,CLR总是知道对象的类型是什么。调用GetType()方法可以知道对象的确切类型,由于它是非虚方法,所以一个类型不可能伪装成另一种类型。每种编程语言都规定了开发人员具体如何进行这种转换操作。例如,C#不要求任何特殊语法即可将对象转换成他的基类型,因为向 ...
分类:
Web程序 时间:
2016-05-28 15:59:45
阅读次数:
166
含有抽象方法的类,抽象方法即用abstract修饰的方法,即父类只知道其子类应该含有该方法,但无法知道子类如何实现这些方法 抽象类限制规定子类必须实现某些方法,但不关注实现细节 抽象类中可以包含普通方法(在Java中仍然为虚方法),也可以没有抽象方法 抽象类无法用于实例化对象,但可以定义引用变量,以 ...
分类:
编程语言 时间:
2016-05-18 01:35:01
阅读次数:
182
前几天跟同事brainstorm,讨论一个关于纯虚类的使用问题,挺有意思。回来心中久久不能平静,写出来一吐为快。
不论在C++中还是C#中,纯虚类都是不能实例化的,这是因为纯虚类其实是一个对业务类型的一种高度抽象,本质上是不存在这种东西的,所以也就不能实例化它。对于C++中只要类中含有一个纯虚函数就是纯虚类,而C#中是abstract修饰的类就是纯虚类,即使类中没有虚方法也可以是纯虚类,在这里我...
分类:
其他好文 时间:
2016-05-13 04:03:54
阅读次数:
166
重载:重载一定是在同一个类当中,有一组方法名字相同,功能是类似的,但参数不同。 重写:在父子类当中,子类拥有与父类同名、同参、同返回类型的方法,可以改变父类的行为。父类加关键字virtual虚方法(为了在子类当中去重写父类的方法),子类中要加关键字override,体现了面向对象中的多态性(都不叫就 ...
分类:
其他好文 时间:
2016-05-09 15:47:10
阅读次数:
236