thinking in java-chap 1

今天开始看Thinking in java.
没有给自己定目标多长时间看完(但是一定要看完,而且是仔仔细细的),这是因为时间太不确定了,与其订一些根本没办法严格执行的计划,还不如老老实实埋头看.少说多做,开始!

第一章:对象入门
1.1~1.3
类的主要目标之一--封装:
实现封装,写类库的人(类创建者)不想让使用类的人(客户程序员)知道类怎么实现的,只告诉他类的接口,类的实现细节被隐藏,这就叫封装.
换句话说:客户程序员眼里的接口就是类了.比如我们买个电视机回家,我们认为那个屏幕和遥控器就是电视了.电视里面的实现千差万别我们都不知道(也不想知道)

灯泡的例子:
Light lt = new Light    //new Light--新建Light类的对象,Light lt--新建Light类的句柄,lt=...--把对象地址给句柄
lt.on();                           //现在可以用lt这个句柄来操作对象了,lt.on()--调用对象lt的on成员函数(OOP里叫on 方法)

4个封装关键字:
private/protected/public/friendly   其中friendly是隐式表达的,只在packet的范围内使用

1.4~1.6
对象的组织--何时使用继承?
有了原始的类,我们就可以继承了,这看起来我们的方案就可以复用了.但实际上,继承是有害的(有哪些缺点还没搞懂,不过好像是因为增加了复杂度...过段时间再理解吧),不应滥用继承.

类的功能需要扩展时--可以新建一个类2,将你本来想继承的功能所在的类1包含进来.怎么包含?在类2里新建一个类1的对象,做为自己的成员.这个思想不错,看起来似乎也能解决一些需要多继承的场合

类的功能需要更新时--有一个shape类,表示可绘制的图形,圆啊矩形啊都可以来继承它,shape的draw方法就需要重新写了.假如客户程序员又写了些三角形啊5边形啊等等的类,类的最终使用者必须要知道这些乱七八糟的类的确切名称才可以使用吗?不用!只要他们覆盖shape类的draw方法就可以调用.这就是多型--同样的接口调用不同对象的同名方法.

基础类和接口:
上面可以看到,这些类的公共的接口必须要设计好.如果我们不想创建一个可以被实际使用的类(可以创建对象的类)作为接口,那么就在类上面加个abstract关键字就好了.函数(应该叫"方法"!!老是改不了口)也可以是abstract的.需要实际使用的类不应该再带有abstract成员.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值