分享
 
 
 

【学习笔记】Thinking in java (第三版)第六章 Reusing Classes(复用类)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

类的复用:

1 在新的类里面直接创建旧的对象.这种方式被称为合成(composition).

2 创建一个新的,与原来的那个类同属于一种类型的类.你全盘接受了旧类的形式,在没有对它做修改的情

况下往里面添加了新的代码.这种方法叫继承(Inheritance).

如果你想对reference初始化,那么可以在以下几个时间进行:

1 在定义对象的时候.这就意味着在构造函数之前,这们已经初始化完毕了.

2 在这个类的构造函数里.

3 在即将使用那个对象之前.

继承语法(Inheritance syntax)

继承是Java最重要的概念.实际上当你创建类的时候,你就是在继承.要么显示的继承了别的类,要么隐含地

继承了标准Java根类,Object.继承使用了extends关键字.

继承不仅仅是拷贝基类的接口.当你创建了一个派生类的对象,这个对象里面还有一个基类的子对象

(subobject).构造行为是从基类"向外"发展的,所以基类会在派生类的构造函数访问它之前进行初始化.即

编译器会强制你将基类构造函数的调用放在派生类的构造函数的最前面.假如类没有默认的构造函数,或者

你在调用的基类构造函数是带参数的,你就必须用super关键词以及合适的参数明确地调用基类的构造函数

.

确保妥善地清理

如果你要妥善地进行清理,一定要自已写清理方法,别去用finalize().执行的顺序与创建对象的顺序相反.

名字的隐藏(Name hiding)

一个类继承了另一个类,它的一个方法也重载了另一个方法.要这个类里面基类的方法依然有效.即基类的

方法派生类也有.派生类是基类的超集,里面可能有一些基类没有的方法.因此,"上传"(upcasting)总是安

全的."下传(downcasting)"可能会发生问题.

继承的优点之一是支持渐进式的开发(incremental develop).添加新代码的时候不会给老代码带来bug.

继承尽管占有很重要的地位,但是不要滥用.

It’s important to realize that program development is an incremental process, just like

human learning. You can do as much analysis as you want, but you still won’t know all the

answers when you set out on a project. You’ll have much more success—and more immediate

feedback—if you start out to “grow” your project as an organic, evolutionary creature,

rather than constructing it all at once like a glass-box skyscraper.

final关键字

Java的final关键字根据上下文的不同含义也有所不同.但总的来说,它的意思是"这个东西不允许改动

".final的三种用途:数据(data),方法(method),类(class).

final的数据

常量(constant):

常量用于以下两种情况:

1 可以是"编译时的常量(compile-time constant)",这样就再也不能改了.

2 也可以是运行时初始我化的值,这个值你以后不想改了.

Java中这种常量必须是primitive型的,而且要用final关键字表示.这种常量的赋值必须要定义的时候进行

.一个即是static又是final的数据成员只会占据一段内存,并不可修改.当final不是指primitive,而是用

于对象的reference的时候.final的意思是这个reference是常量.初始化的时候,一量将reference连到某

个对象,那么它就再也不能指向别的对象.

空白final数据(blank final),也就是说把数据成员声名成final的,但没有给初始化值.你必须先初始化,

再使用空白的数据成员,而且编译器会强制你这么做.

final参数:你可以读,但是不能改参数.

final方法:

目的有二:第一,禁止派生类进行修改.第二,就是效率.如果方法是final的,那么编译器就会把调用转换成

内联的.不过,最好不要把效率问题留给编译器和JVM去处理.

private方法隐含有final的意思,你可以给一个方法加一个final修饰符,但是这样做什么意义也没有.如果

方法是private的,那么它就不属于基类的接口.它只能算被类隐藏起来.如果你在派生类中创建同名的

public,protected或package方法,它们是没有任何联系的.你并没有覆写那个方法.

final类:

把整个类都定义为final的,就等于宣布,你不会去继承这个类,也不允许别人去继承这个类.但这样也是没

有意义的.

类的装载:

在较传统的语言中,程序启动的时候都是一次装载所有的东西,然后进行初始化,接下来再开始执行.

在Java中,编译之后每个类才都是保存在它自已的文件里.不到需要的时候,这个类是不会被装载的.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有