JAVA学习之OOP Object Reference
- August 26th, 2005
- in Learning Notes
[IMG]upload/sun.gif[/IMG]
对象是一些相关的变量和方法的软件集,对象是理解面向对象技术的关键。现实生活中的对象,比如狗、桌子、电视、自行车等等。你可以发现现实世界中的对象有两个共同特征:它们都有状态和行为。比如狗有自己的状态(比如名字、颜色、以及饥饿等等)和行为(比如摇尾巴等等),而Reference就是提供行为的方法。
[FONT-COLOR=Red]UPDATE:Reference、Static用法。[/FONT-COLOR]
[IMG]upload/sun.gif[/IMG]
JAVA的学习断断续续学习差不多快一年了,但每次都没有系统把所有的知识结合起来!这次花点时间结合《THINKING IN JAVA》把前阶段的知识整理一下,在这里做个记录!
[CODE_LITE]对象是一些相关的变量和方法的软件集,对象是理解面向对象技术的关键。现实生活中的对象,比如狗、桌子、电视、自行车等等。你可以发现现实世界中的对象有两个共同特征:它们都有状态和行为。比如狗有自己的状态(比如名字、颜色、生育以及饥饿等等)和行为(比如摇尾巴等等)。而Reference就是提供行为的方法 [/CODE_LITE]
1.OOP中唯一关系的是对象的接口是什么,就像计算机的销售商她不管电源内部结构是怎样的,他只关系能否给你提供电就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象数据,很大限度上提高复用率。
2.OOP中最重要的思想是类,类是模板是蓝图,从类中构造一个对象,即创建了这个类的一个实例(instance)。
3.对象的3个主要特性
behavior—说明这个对象能做什么.
state—当对象施加方法时对象的反映.
dentity—与其他相似行为对象的区分标志.
每个对象有唯一的indentity 而这3者之间相互影响.
4、fields和methods
JAVA其实要做的事情无非就是:定义CLASS、产生对像、将消息发送给对像。
每个对像有会有数据成员(fields)和成员函数(methods),不同的对像彼此之间并不共享数据成员。
如:class Date{
int m;
float n;
boolean o;
}
为上面的class产生一个对像
Date s=new date();
5.类之间的关系:
use-a :依赖关系
has-a :聚合关系
is-a :继承关系–例:A类继承了B类,此时A类不仅有了B类的方法,还有其自己的方法.(个性存在于共性中)
6.Reference:
《Thinking In Java》切入Java就提出“Everything is Object”。在Java这个充满Object的世界中,reference是一切谜题的根源,所有的故事都是从这里开始的。
[FONT-COLOR=Green]没有null reference,reference必须有初值。[/FONT-COLOR]
使用reference要比使用指针效率高。因为reference不需要测试其有效性。指针可以重新赋值,而
reference总是指向它最初获得的对象。
用一段代码表达:
[CODE_LITE]
/*
* 创建日期 2005-8-31
*ReferenceTest.java
*www.blueclassic.net
*/
public class ReferenceTricks
{
public static void main(String[] args)
{
ReferenceTricks r = new ReferenceTricks();
// reset integer
r.i = 0;
System.out.println
(”Before changeInteger:” + r.i);
changeInteger(r);
System.out.println
(”After changeInteger:” + r.i);
// just for format
System.out.println();
// reset integer
r.i = 0;
System.out.println
(”Before changeReference:” + r.i);
changeReference(r);
System.out.println
(”After changeReference:” + r.i);
}
private static void
changeReference(ReferenceTricks r)
{
r = new ReferenceTricks();
r.i = 5;
System.out.println
(”In changeReference: ” + r.i);
}
private static void
changeInteger(ReferenceTricks r)
{
r.i = 5;
System.out.println
(”In changeInteger:” + r.i);
}
public int i;
}[/CODE_LITE]
运行结果如下:
[CODE_LITE]Before changeInteger:0
In changeInteger:5
After changeInteger:5
Before changeReference:0
In changeReference: 5
After changeReference:0[/CODE_LITE]
这里,我们关注的是两个change,changeReference和changeInteger。从输出的内容中,我们可以看出,两个方法在调用前和调用中完全一样,差异出现在调用后的结果。
7.构造对象使用构造器:构造器的提出,构造器是一种特殊的方法,构造对象并对其初始化。
例:Data类的构造器叫Data
new Data()—构造一个新对象,且初始化当前时间.
Data happyday=new Data()—把一个对象赋值给一个变量happyday,从而使该对象能够多次使用,此处要声明的使变量与对象变量二者是不同的.new返回的值是一个引用。
构造器特点:构造器可以有0个,一个或多个参数
构造器和类有相同的名字
一个类可以有多个构造器
构造器没有返回值
构造器总是和new运算符一起使用.
TIJ到现在还没看呢,真是惭愧…
哈哈,我很早就有了,但到现在还没吃透,这才是惭愧哦!
你的链接已加上,将与其他链接一起随机交替出现在主页。
欢迎常来做客!