权重域名

已备案域名,老域名交易,高权重域名购买,百度权重域名出售,权重域名买卖,万网已备案老域名注册查询抢注转让,买老域名,二手老域名,鹰潭网站建设

[置顶] 老米吧严禁向诈骗等违法客户出售域名,国内在严打诈骗

[置顶] 长期出售政府机关、事业单位、社会团体BA建站历史老域名等!

[置顶] 长期出售外链老域名、百度加V认证老域名、历史建站老域名等!

[置顶] 长期出售Godaddy老域名、Godaddy历史建站BA域名等!

[置顶] 长期出售15年以上的老域名、10年以上老域名等!

[置顶] 长期出售各种BA历史建站老域名、15年老域名、高权重域名等!

合成与继承的选择

合成与继承的选择

合成与继承都能让你将子对象植入新的类(合成是显式的,继承是隐含的)。也许你向了解一下这两者有什么区别,以及该如何进行选择。一般来说,合成用于新类要使用旧类的功能,而不是其接口的场合。也就是说,把对象嵌进去,用它来实现新类的功能,但是用户看到的是新类的接口,而不是嵌进去的对象的接口。因此,你得在新类里嵌入private的旧类对象。

有时,让用户直接访问新类的各个组成部分也是合乎情理的;这就是说,将成员对象定义成public。成员对象各自都有隐藏实现的机制,因此这么做也是安全的。如果用户知道你用了哪些零件,那么接口对他们来说就变得更简单了。

Final关键词的使用——数据

Final关键词的使用——数据

Java的关键词final的含义会根据上下文略有不同,但是总的来说,它的意思都是“这样东西不允许改动”。你可能会出于两点考虑不想让别人改动:设计和效率。由于这两个原因差别很大,因此很可能会无用final关键词。

很多编程语言都有通知编译器“这是段数据”的手段。常量能用于下列两种情况:1、可以是“编译时的常量”,这样就再也不能改了。2、也可以是运行时初始化的值,这个值你以后就不想再改了。如果是编译时的常量,编译器会把常量放到算式里面:这样编译的时候就能进行计算,因此也就降低了运行时的开销。在Java中这种常量必须是primitive型的,而且要用final关键词表示。这种常量的赋值必须在定义的时候进行。

Final和private的使用

Final和private的使用

Private方法都隐含有final的意思。由于你不能访问private的方法,因此你也不能覆写它。你可以给private方法加一个final修饰符,但是这样做什么意义也没有。这个问题有可能会造成混乱,因为即使你覆写了一个private方法(它隐含有final的意思),看上去它还是可以运行的,而且编译器也不会报错。

只有是基类接口里的东西才能被覆写。也就是说,对象应该可以被上传到基类,然后再调用同一个方法(这一点我们应该很清楚的)。如果方法是private的,那它就不属于基类的接口。它只能算是被类隐藏起来的,正好有着相同的名字的代码。如果你在派生类里创建了同名的public或protected,或package权限的方法,那么它们同基类中可能同名的方法,没有任何联系。你并没有覆写那个方法,你只是创建了一个新的方法。由于private方法是无法访问的,实际上是看不见的,因此这么做除了会影响类的代码结构,其它什么意义都没有。

初始化与类的装载

初始化与类的装载

在较传统的编程语言中,程序启动的时候都是一次装载所有的东西,然后进行初始化,接下来再开始执行。这些语言必须仔细的控制初始化的过程,这样static数据的初始化才不至于会产生问题。就拿C++为例子,如果一个static数据要依赖另一个static的数据,而它又没有初始化的话,问题就来了。

Java采用了一中新的装载模式,因此没有这种问题。Java的所有东西都是对象,因此很多事情就都变得简单了,这就是一例。编译之后每个类都保存在它自己的文件里。不到需要的时候,这个文件是不会装载的。总之你可以说“类的代码会在它们第一次使用的时候装载”。类的装载通常都发生在第一次创建那个类的对象的时候,但是访问static数据户籍哦static方法的时候也会装载。

Java语言的多态性

Java语言的多态性

多态性是继数据抽象和继承之后的,面向对象的编程语言的第三个基本特性。它提供了另一个层面的接口与实现的分离,也就是说把做什么和怎么做分开来。多态性不但能改善代码的结构,提供其可读性,而且能让你创建可扩展的程序。所谓可扩展是指,程序不仅在项目最初的开发阶段能成长,而且还可以在需要添加新特性的时候成长。

封装通过将数据的特性与行为结合在一起,创建了一种新的数据类型。隐藏实现通过将细节设成private,完成了接口与实现的分离。之所以要采取这种比较呆板的顺序来讲解,是要照顾那些过程语言的程序员们。但是,多态性是站在类的角度来处理这种逻辑上的分离的。我们常看到,继承是怎样允许你将对象当作它自己的,或者它的基类的类型来处理。

方法调用的绑定

方法调用的绑定

将方法的调用连到方法本身被称为绑定。当绑定发生在程序运行之前时(如果有的话,就是由编译器或连接器负责)被称作前绑定。可能你从没听说过这个术语,因为面向过程的语言根本就没有这个概念。C的编译器只允许一中方法调用,那就是前绑定。当编译器只有一个instrument的reference的时候,它是不知道该连到哪个方法的。

解决方案就是后绑定,它的意思是要在程序运行的时候,根据对象的类型来决定该绑定哪个方法。后绑定也被称为动态绑定或运行时绑定。如果语言实现了后绑定,那它就必须要有能在运行时判断对象类型,并且调用其合适的方法的机制。也就是说,编译器还是不知道对象的类型,但是方法的调用机制会找出,并且调用正确的方法。后绑定机制会随语言的不同而不同,但是你可以设想,对象里面必定存有“它属于哪种类型”的信息。

构造函数的调用顺序

构造函数的调用顺序

构造函数总是与众不同,牵涉到多态性的时候也不例外。尽管构造函数不是多态的(实际上它们都是static方法,只是声明的时候没有直说),但是能理解它在复杂的类系和多态的环境下是如何工作的,仍然十分重要,在创建派生类对象的过程中,基类的构造函数总是先得到调用,这样一级一级的追溯上去,每个基类的构造函数都会被调用。这种做法是很合乎情理的,因为构造函数有一个特殊的任务:它要知道对象是不是被正确地创建了。

派生类只能访问它自己的成员,它看不到基类的成员(因为它们通常是private的)。只有基类的构造函数才知道怎样初始化它的成员,同时也只有它才有权限进行初始化。因此“把所有的构造函数都调用一遍”就变得非常重要了,否则对象就没法创建了。这就是为什么编译器会强制每个派生类都要调用其基类的构造函数的原因了。如果你不在派生类的构造函数里明确地调用基类的构造函数,那编译器就会悄悄的调用那个默认的构造函数。如果没有默认构造函数,编译器就会报错。要是类没有构造函数,编译器会自动为你准备一个默认构造函数。

多态方法在构造函数中的行为

多态方法在构造函数中的行为

构造函数的调用顺序也带来了一个有趣的难题。如果构造函数调用了一个动态绑定的方法,而这个方法又属于正在创建中的对象,那它会产生什么样的效果呢?如果是普通方法,你猜也可以猜到它会怎么做:由于不制动啊这个对象应该算是基类还是派生类的,因此动态绑定会在运行时进行解析。处于一致性的考虑,你可能认为构造函数也应该这么做。

事实并非完全如此。如果你在构造函数里面调用了动态绑定的方法,那么它会使用那个覆写后的版本。但是这个效果会有些出人意料,因此会称为一些不易排查的bug的藏身之处。

从理论上讲,构造函数的任务就是创建对象(这可不是什么轻而易举的事)。从构造函数的角度来看,对象可能只创建了一半——你只知道基类对象已经初始化了,但是你还不知道它会派生出什么类。但是动态绑定的方法调用,会从外面把手伸进类系。它调用的是派生类的方法。如果你在构造函数里面这么做的话,你就可能调用了一个会访问尚未初始化的成员的方法了——注定会出问题。

用HTML和CSS格式化

用HTML和CSS格式化

我们做网站的时候,需要借助于HTML和CSS来增加一些视觉效果。表头单独生成为HTML表中的一行,并对它应用一个特殊的CSS样式。必须把这个样式增加到网站的CSS样式表中。我们在完成PHP脚本的代码,使用CSS样式表生成一个格式化的表头。当然,不要忘记表头是HTML的一部分,而这个表还有多列。我们修改PHP脚本,使用新的排序SELECT查询,然后增加生成表头的代码。把新脚本上传到你的web服务器,并在浏览器中打开页面,可以看到内容就会突出显示。

CSS是能够真正做到网页表现与内容分离的一种样式设计语言。相对于传统HTML的表现而言,CSS能够对网页中的对象的位置排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,并能够进行初步交互设计,是目前基于文本展示最优秀的表现设计语言。CSS能够根据不同使用者的理解能力,简化或者优化写法,针对各类人群,有较强的易读性。比如,如果想让链接字未点击时是蓝色的,当鼠标移上去后字变成红色的且有下划线,这就是一种风格。通过设立样式表,可以统一地控制HTML中各标志的显示 属性。级联样式表可以使人更能有效地控制网页外观。使用级联样式表,可以扩充精确指定网页元素位置,外观以及创建特殊效果的能力。

图像文件的使用技巧

图像文件的使用技巧

JPEG图像有两种不同的MIME类型,这是浏览器开发商处于某种原因决定对JPEG图像使用不同的MIME类型。为了确保JPEG文件验证能够在尽可能多的浏览器上工作,有必要对这两个MIME类型都进行检查。但是我们在检查的时候要检查图像文件大于0字节。这是因为,如果用户指定一个文件,而该文件在用户的计算机上并不实际存在,就有可能在服务器上创建一个0字节的文件。假如发生这种情况,PHP也能安全地加以处理,检查是否是空文件。

PHP脚本存储多个脚本文件间共享的脚本数据,另外它也很适合存储所有常量脚本数据。在这种情况下,把图像文件放入脚本程序中,主要把图像文件名在脚本文件中加以路径编写的一起。这样依赖,如果你希望文件上传上限更大,也更容易找到并修改这个图像文件的信息了。在PHP中从web服务器删除一个图像文件。在这种情况下我们会删除所有上传的临时图像文件。由于上传有可能失败,也就没有临时图像文件,所以我们在它前面加一个@符号来抑制unlink()可能生成的错误。可以在任何PHP函数前加上@来抑制其错误报告。