×

类的三个基本特征是什么?Javascript 如何强制类型转换

admin admin 发表于2023-09-20 19:18:06 浏览41 评论0

抢沙发发表评论

本文目录

类的三个基本特征是什么

三个基本特征是:封装、继承、多态。

1、 封装

封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。

封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

2、继承

面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

通过继承创建的新类称为“子类”或“派生类”。

被继承的类称为“基类”、“父类”或“超类”。

继承的过程,就是从一般到特殊的过程。

要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。

在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。

继承概念的实现方式有三类:实现继承、接口继承和可视继承。

1)实现继承是指使用基类的属性和方法而无需额外编码的能力;

2)接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;

3)可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。

在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是一个人,Manager 也是一个人,因此这两个类都可以继承 Person 类。但是 Leg 类却不能继承 Person 类,因为腿并不是一个人。

抽象类仅定义将由子类创建的一般属性和方法,创建抽象类时,请使用关键字 Interface 而不是 Class。

OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。

3、 多态

多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

实现多态,有二种方式,覆盖,重载。

覆盖,是指子类重新定义父类的虚函数的做法。

重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

其实,重载的概念并不属于“面向对象编程”,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的(记住:是静态)。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!真正和多态相关的是“覆盖”。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态(记住:是动态!)的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚邦定)。结论就是:重载只是一种语言特性,与多态无关,与面向对象也无关!引用一句Bruce Eckel的话:“不要犯傻,如果它不是晚邦定,它就不是多态。”

那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。

Javascript 如何强制类型转换

netJavaScript的变量确实是没有类型的,就是说你varvariable后,可以随便的给variable赋值,不会有任何问题。可是赋给变量的值本身自己却是有类型的,比如:String、Object、Boolean和Number等等。所以JS的变量还是有类型转换的,当然很多时候JS解析引擎会默认处理很多的type convert。不过有的时候也需要我们强行转换数据类型,最常见的就是:’’+数字+数字,这种情况来生成字符串累加。 象:’’+数字+数字,这样的语法真的是比较的ugly,想我们在C中使用(int)xxx和C++中int(xxx)来做类型转换多么的清晰明了。其实JavaScript也支持这样的类型转换语法的,例如:《scriptlanguage=“javascript“varstr=’100’;varnum=Number(100);alert(typeof(num)+’:’+num);varobj=Object(str);alert(typeof(obj)+’:’+obj);varbool=Boolean(str);alert(typeof(bool)+’:’+bool);varnum=100;varstr=String(num);alert(typeof(str)+’:’+str);varbool=Boolean(num);alert(typeof(bool)+’:’+bool);varobj=Object(num);alert(typeof(obj)+’:’+obj);varbool=true;varstr=String(bool);alert(typeof(str)+’:’+str);varnum=Number(bool);alert(typeof(num)+’:’+num);varobj=Object(bool);alert(typeof(obj)+’:’+obj);varobj={};varstr=String(obj);alert(typeof(str)+’:’+str);varnum=Number(obj);alert(typeof(num)+’:’+num);varbool=Boolean(obj);alert(typeof(bool)+’:’+bool);《/script 除了Number(obj)转换失败,其它强行转换表达式都能取得有意义的转换效果。 使用强行转换表达式最大的好处就是可以使程序代码变得清晰,为本身就类型混乱的JavaScript编程减少混淆的可能。 至少我觉得类似:varstr = String(3) + String(3); 比varstr= ’’ + 3 + 3; 表意更清晰。 还有默认转换比较混乱的地方,比如:“88“-8和“88“+8,前者的默认转换是把字符串转为数字(结果80),而后者又是把数字转为字符串(结果“888“)@_@,真是乱。所以使用变量类型强制转换,就可能避免这类默认转换带来的潜在理解出错的问题。

VC++中为何要引入句柄类型

不是引入,是支持。WINDOWS api中,HANDLE是标准类型(因为很多语言没有指针,这个算是一种兼容吧),SDK编程经常用到。在VC和其它WIN32编程环境中,必须支持句柄,否则无法兼容和使用API,而这个是win下面的编程基础。

存储器可分为哪两种

存储器可分为即内存储器和外存储器,简称内存和外存。

内存是直接受CPU控制与管理的并只能暂存数据信息的存储器,外存可以永久性保存信息的存储器。存于外存中的程序必须调入内存才能运行,内存是计算机工作的舞台。内存与外存的区别是:内存只能暂存数据信息,外存可以永久性保存数据信息;

外存不受CPU控制,但外存必须借助内存才能与CPU交换数据信息;内存的访问速度快,外存的访问速度慢。内存可分为:RAM与ROM。RAM的特点是:可读可写,但断电信息丢失。ROM用于存储BIOS。外存有:磁盘(软盘和硬盘)、光盘、U盘(电子盘)。

扩展资料:

构成存储器的存储介质,目前主要采用半导体器件和磁性材料。存储器中最小的存储单位就是一个双稳态半导体电路或一个CMOS晶体管或磁性材料的存储元,它可存储一个二进制代码。由若干个存储元组成一个存储单元,然后再由许多存储单元组成一个存储器。

一个存储器包含许多存储单元,每个存储单元可存放一个字节。每个存储单元的位置都有一个编号,即地址,一般用十六进制表示。一个存储器中所有存储单元可存放数据的总和称为它的存储容量。

假设一个存储器的地址码由20位二进制数(即5位十六进制数)组成,则可表示220,即1M个存储单元地址。每个存储单元存放一个字节,则该存储器的存储容量为1KB。

参考资料来源:百度百科-存储器

长整形变量与短整型变量有什么区别

1、整型变量可以分为以下4类:

(1)短整型,类型关键字为short。

(2)基本整型,类型关键字为int。

(3)长整型,类型关键字为long。

(4)无符号整型,类型关键字为unsigned或unsignedshort或unsignedlong。

2、他们都是数据类型的一种,区别就在与取值范围,和bit大小不一样,针对不同取值,应用不同的数据类型变量:

计算机存储器可分为几类它们的主要区别是什么

计算机存储器可分为两类,分别有内存和外存。

二者的区别:

1、位置不同

内存也被称为内存储器和主存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。

外储存器是指除计算机内存及CPU缓存以外的储存器,此类储存器一般断电后仍然能保存数据。常见的外存储器有硬盘、软盘、光盘、U盘等。

2、特点不同

内存储器速度快 价格贵,容量小,断电 后内存内数据会丢失。(ROM 断电不丢失)

外存储器 单位价格低,容量大,速度慢, 断电后数据不会丢失。

扩展资料:

外存的类型

软盘:软磁盘使用柔软的聚酯材料制成原型底片,在两个表面涂有磁性材料。常用软盘直径为3.5英寸,存储容量为1.44MB,软盘通过软盘驱动器来读取数据。

U盘:U盘也被称为“闪盘”,可以通过计算机的USB口存储数据。与软盘相比,由于U盘的体积小、存储量大及携带方便等诸多优点,U盘已经取代软盘的地位。

硬盘:硬磁盘是由涂有磁性材料额铝合金圆盘组成的,每个硬盘都由若干个磁性圆盘组成。

磁带存储器:磁带也被称为顺序存取存储器SAM。它存储容量很大,但查找速度很慢,一般仅用作数据后备存储。计算机系统使用的磁带机有3中类型:盘式磁带机、数据流磁带机及螺旋扫描磁带机。

光盘存储器:光盘指的是利用光学方式进行信息存储的圆盘。它应用了光存储技术,即使用激光在某种介质上写入信息,然后再利用激光读出信息。光盘存储器可分为:CD-ROM、CD-R、CD-RW、和DVD-ROM等。

软盘、硬盘、光盘、U盘、磁带都是外部存储器。从冯.诺依曼的存储程序工作原理及计算机的组成来说,计算机分为运算器、控制器、存储器和输入/输出设备,这里的存储器就是指内存,而硬盘属于输入/输出设备。

CPU运算所需要的程序代码和数据来自于内存,内存中的东西则来自于硬盘,所以硬盘并不直接与CPU打交道。

硬盘相对于内存来说就是外部存储器。存储器是用来存储器数据的,内存有高速缓存和内存,计算机内部存储,外存就是类似U盘的外部存储。

参考资料:百度百科-外存储器

参考资料:百度百科-内存