Thinking in java学习1

Smalltalk的五项基本特征:

1、万物皆对象。将对象想成一种特殊的变量(对象也是一种变量);它存储数据(对象的属性),而且还可以让你“提要求”,命令它进行某些操作(对象的方法)。从理论上讲,你可以把所有待解决的问题中的概念性组件(狗,建筑,服务等)都表示成程序里的对象。

2、程序就是一组相互之间传递消息,告诉对方该干些什么的对象。你只要向那个对象“发一个消息”,就能向他提出要求。更确切的说,你可以这样认为,消息是调用专属某个对象的方法的请求。(程序是一组相互调用对方方法的对象的组合,如何协调对象之间的关系就是所谓的架构(个人理解))

3、每个对象都利用别的对象来组建它自己的记忆。换言之,你通过将已有的对象打成一个包,来创建新的对象。由此,你可以将程序的复杂性,隐藏在对象的简单性之下。(每一个对象都可以是其他对象的属性,对象与对象之间有关联关系

4、对象都有类型。说这句话的意思是,任何对象都是某个类的实例,而这里的"类(class)"就是“类型(type)”的意思。用以区分类的最突出的特点就是"你能传给它什么消息"。(即该类对外的接口

5、所有属于同一类型的对象能接受相同的消息。以后你就会知道,实际上这是"定义"而不是特点。一个"circle"型对象也是一个“shape”型的对象,所以可以保证circle能接受shape的消息。也就是说,你写给shape的代码能自动的交由任何符合shape描述的东西处理。这种互换性是OOP最强大的功能之一。(这里特别要关注“互换”两个字,这个定义确定了java的多态

 

关于类:类描述的是一组具有相同特征(数据元素)和行为(功能)的对象,所以类实际上是一种数据类型。

 

面向对象的编程的挑战之一就是,如何在问题空间的元素与解决空间的对象之间建立一种一对一的映射。(从这句话是否可以联想到单一职责原则

 

接口只管你能向这个对象发什么请求,并不管具体的实现。(要面向接口编程

 

Unified Modeling Language(UML)格式:每个类由一个方框来表示,这个类的名字写在方框的顶部,中间是你要关心的数据元素(类的属性),方法列在方框的地步。通常UML的设计图只会显示类的名字以及public方法,所以中间部分是不显示的。

 

隐藏实现:将程序员分成类的创建者和客户程序员(in china通常两者是一个人,但是建议还是要隐藏具体的实现),客户程序员的目的是收集各种类,以便能快速开发应用程序。而类的创建者的目的是创建一些这样的类,他们只透露一些客户程序员必须知道的东西,其他部分则完全隐藏了。隐藏之后,创建者可以根据需要修改部分而不用担心会对其他人造成影响。

public:所有类都能访问

private:除了类本身其他的都不能访问,包括子类

protected:同一个包下的可以访问,不同包下的子类也可以访问

package:同一个包下面的类都可以访问(如果是子类但是不是同包能否访问?经过测试是不可以访问的)

 

前绑定:在进行函数的调用是,编译器会产生那个名字的函数的调用,而连接器负责将这个调用解析成须执行的代码的绝对地址。

后绑定:当你向某个对象发送了一个消息之后,不到运行时,系统不能确定到底该调用哪段代码。编译器只保证这个方法存在,并且检查参数和返回值的类型,但是不知道具体执行的是哪段代码。

Java采用的是后绑定,java用了一些特殊的代码来戴婷绝对调用。代码用存储在对象中的信息来计算方法的地址。因此每个对象的运行方式会根据这段特殊代码的内容而改变。当你向那个对象发送一个消息时,对象实际上知道该如何处置。(多态的实现原理)

 

java采用单根继承,所有的类都继承自Object,Object是java中的基类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值