LINUKS BLOG

Make progress is the topic for ever...

My Photo
Name:
Location: China

It's a fans of computer/ Computer is my favorite/ Making progress is the topic for ever...

Thursday, July 19, 2007

The record of learning of thinking JAVA

*动态绑定是java的缺省行为,因此无需添加什么额外的关键词就能获得多态性.

"你是一个Shape对吧,好,我知道你可以erase()和draw(),这这么做,照顾好自己."

通常在有些设计方案中,你只想让基类去表示由其派生出的类的接口.也就是你不想让人创建一个基类的对象,而只是想把对象上传给它,以期能使用这个类的接口.这样你就需要使用abstract关键词来把这个类做成抽象类.

abstract就像是一个声明"由这个类所派生出的所有的类都有这个方法,但是它的实现不在这里" 的存根.如果有个类继承了这个abstract类,那么它要么实现这个方法,要么也是一个abstract类.

Chapter2
5.这个对象不是primitive型的.
char c='x';
Character C=new Character(c);

Character C=new Character('x');

Java中的数组
实际上所有编程语言都有数组,使用C和C++的数组是有风险的,因为在它们眼里,数组只是一段内存.如果程序访问到数组之外的内存,或者还未进行初始化就使用了这些内存,那么很有可能会发生一些无法预料的后果.

Java对象的生命同期同primitive的不同.当你用new创建java对象之后,它会晃荡作用域外面.如:
{
String s=new String("a string");
}//End of scope
s这个reference会在作用域结束之后消失.但是s所指的那个String仍然还占着内存.在这段代码里,你已经没法访问这个对象了,因为唯一指向它那个的reference现在已经出了作用域.

8.如果万物皆对象,那么特定类型的对象的特征和行为又是由什么决定的?
class这个关键词,它的意思是"现在我要告诉你这种新类型的对象都有些什么特征."

当你定义类的时候(java编程要做的就是定义类,创建这些类的对象,然后再向这些对象发送消息),你可以往类里放两种元素:数据(field,有时也被称为数据成员),以及方法(method,有时也被称为成员函数member function).数据可以是任何类型的,能通过reference进行操控的对象.它也可以是任何一种primitive数据(这时它就不是reference了).如果它是一个对象的reference,那么你就必须用一种被称为构造函数(construtor)的特殊方法对它进行初始化,这样才能确保将它连上一个真实的对象(用new,就像前面看到的).如果这是个primitive数据,那么你可以在定义的时候直接对它进行初始化.

9.下面就是一个带数据成员的类:
class DataOnly{
int i;
float f;
boolean b;
}

DataOnly类只保存数据,要想理解方法是怎么工作的,你必须先理解参数(argument)和返回值(return value)的概念.

10.当primitive数据成为类的成员时,它会得到一个默认值,但只有在"变量被用作类的成员"时,java才能确保它获得这些默认值.

方法的基本的组成包括方法的名字,参数,返回类型,以及方法的正文.
returnType methodName(/*Argument list*/){
/*Method body*/
}

0 Comments:

Post a Comment

<< Home