面向对象基础知识(二)-类的继承

原创 2007年09月26日 16:47:00
 
一、静态类和静态类成员

 

静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数。静态类成员可用于分离独立于任何对象标识的数据和行为:无论对象发生什么更改,这些数据和函数都不会随之变化。当类中没有依赖对象标识的数据或行为时,就可以使用静态类。

静态类静态类

类可以声明为

使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法。

静态类的主要功能如下:

它们仅包含静态成员。

它们不能被实例化。

它们是密封的。

它们不能包含实例构造函数(C# 编程指南)。

因此创建静态类与创建仅包含静态成员和私有构造函数的类大致一样。私有构造函数阻止类被实例化。

使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。

静态类是密封的,因此不可被继承。静态类不能包含构造函数,但仍可声明静态构造函数以分配初始值或设置某个静态状态。

二、抽象类、密封类及类成员

1、抽象类

使用 abstract 关键字可以创建仅用于继承用途的类和成员,即定义派生的非抽象类的功能。使用 sealed 关键字可以防止继承以前标记为 virtual 的类或某些类成员。

抽象类不能实例化。抽象类的用途是提供多个派生类可共享的基类的公共定义。例如,类库可以定义一个作为其多个函数的参数的抽象类,并要求程序员使用该库通过创建派生类来提供自己的类实现。

抽象类也可以定义抽象方法。方法是将关键字 abstract 添加到方法的返回类型的前面。例如:

抽象方法没有实现,所以方法定义后面是分号,而不是常规的方法块。抽象类的派生类必须实现所有抽象方法。当抽象类从基类继承虚方法时,抽象类可以使用抽象方法重写该虚方法。例如:

 

 

如果将虚方法声明为抽象方法,则它对于从抽象类继承的所有类而言仍然是虚的。继承抽象方法的类无法访问该方法的原始实现。在前面的示例中,类 F 上的 DoWork 无法调用类 D 上的 DoWork。在此情况下,抽象类可以强制派生类为虚方法提供新的方法实现。

2、密封类和类成员

static 的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework 公共语言运行库 (CLR) 自动加载。

html5学习笔记---05.JavaScript 中的面向对象,继承和封装

05.JavaScript 中的面向对象 a.创梦技术qq交流群:CreDream:251572072 a.JavaScript 是一种基于对象的语言   类:JavaScript 对象很抽象,...
  • lidew521
  • lidew521
  • 2013年06月11日 14:37
  • 1956

面向对象基础知识总结

面向对象的思维: 1、在这个问题内应该有哪些个类、哪些个对象; 2、这些类好对象应该具有哪些个属性和方法; 3、类和类之间具备什么样的关系。 构造方法: 1、使用new + 构造方法创建一个新的对象...
  • lpf870826
  • lpf870826
  • 2015年01月10日 23:39
  • 247

php面向对象(OOP)—类的继承

通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类以及超类。由已存在的类派生出的...
  • guoshaoqing001
  • guoshaoqing001
  • 2015年06月03日 16:44
  • 355

面向对象--继承、接口

1)继承 好处:提高代码的复用性;使类与类之间产生关系密切,有了关系才有多态的特点。 关键字:extends 注意:java中只支持单继承(只继承一个父类),不支持多个继承(同时继承多个父类),但是j...
  • iamjb180
  • iamjb180
  • 2015年03月12日 09:57
  • 425

10面向对象高级特性三

抽象类 v      抽象类:用abstract关键字来修饰一个类时,该类叫做抽象类; §        抽象类必须被继承。 §        抽象类不能被直接实例化。它只能作为其它类的超类,这...
  • kuangfengbuyi
  • kuangfengbuyi
  • 2011年12月10日 00:25
  • 581

面向对象编程(OOP)中组合与继承的区别

组合与继承都能够提高代码的重用性,那么问题来了,组合与继承的区别是什么?什么时候用组合,什么时候用继承?下面是我百度到的,仅供参考: 类的组合和继承一样,是软件重用的重要方式。组合和继承都是...
  • zheng_guan
  • zheng_guan
  • 2017年02月28日 16:28
  • 553

JavaScript如何实现面向对象和继承机制?

JavaScript实现面向对象?  function MyObject() {    this.name="myobject";    this.type="class";    this.meth...
  • u012575451
  • u012575451
  • 2016年10月02日 13:23
  • 681

JAVA面向对象 类的继承

本页面更新日期: 2016年07月30日前言 继承是面向对象的三大特征之一. 也是实现软件复用的重要手段. Java继承具有单继承的特点, 每个子类只有一个直接父类. 继承的特点 ...
  • tmdlife
  • tmdlife
  • 2016年07月26日 20:10
  • 1523

面向对象中的序列化和反序列化

序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创...
  • forLightWay
  • forLightWay
  • 2017年01月18日 17:36
  • 443

[Java面试二]Java基础知识精华部分

一:java概述(快速浏览): 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器; 1994年将O...
  • ww595213939
  • ww595213939
  • 2017年11月29日 11:13
  • 32
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象基础知识(二)-类的继承
举报原因:
原因补充:

(最多只允许输入30个字)