Thinking in Java ---translation & notes

Object-oriented programming   OOP  面向对象编程

Abstractions  抽象类 

Unified Modeling Language  UML    统一模型语言

一个好的面向对象的设计中,每一个对象做好一件事足以,而非尝试去解决太多。

尝试去把对象看作是一个服务提供者是一个非常简化的工具。

Static 

当声明一个事物是static时,意味着这个域或方法不会与包含它的那个类的任何对象实例关联在一起。所以,即使从未创建某个类的任何对象,也可以调用其static方法或访问其static域。

----你可以直接通过类名访问类中的static方法以及static域【static声明的类和方法只分配一份存储空间,不会因为对象声明的增加而增加,共享--easy access to the static function and static parameters】

static 方法就是没有this的方法

继承

base class A   B extends A   C extends B 

在创建C的实例的时候constructor的调用顺序 :A->B->C

先找到C的根源而后依次按照继承的顺序调用constructor function---在base class中实现对类变量的初始化工作的重要意义

组合combination  匿名类

在一个Class.java文件中只能存在一个和Class同名的对外界设置访问权限的类,其他剩余在文件中的类被称作是匿名类【无法通过import来实现对匿名类的调用,匿名类的作用域只是存在于其所在的文件范围内的类中(岂不是一个内部实现具体操作细节的方法?)】

Final 

final一般的、常用的作用对象是Java提供的几种最基本的数据类型,该关键字的作用莫过于保证所声明的数据的值是一个常亮、在程序运行中不会发生改变。

如果声明一个对象实例为final,其实这说明不了什么:只能保证该对象实例所指向的那块内存的值不会发审改变,具体的该结构内部的参数值的改变是无法操控的,所以这样的声明其实是没有什么意义的。

final类,表明不打算继承该类,而且也不允许别人继承该类;

多态

多态--后期动态绑定:继承关系--A  -> B ->C -> D,ABCD四个类中都写有test() , A aB = new B(); aB.test() --->aB调用的test()是A中还是B中的test(),看似是一个值得商榷的问题,但实则不然。Java的后期动态绑定机制会自动解决这个问题,声明的aB是一个A的对象,但是实则用的是B类的构造器生成的B的对象,在解释、运行该代码的时候看的实则是aB的实际对象类型。所以,aB.test()的调用就是B类里面的test().

向上转型----数据类型只能是从宽往窄的方向进行转型【能够舍弃部分,但却不能多包含一些额外的部分】

抽象方法 abstract

abstract void f()   --只有声明 没有方法体 

多重继承---一个类implements很多个interface

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值