随笔-159  评论-114  文章-7  trackbacks-0

面向过程是以时间为顺序的,组成单位是函数。

面向对象是一套思想。它来源于人类对于客观世界的认识的一般规律。

1什么是对象?

什么都是对象!客观存在的就是对象。

对一个事物来说,一是它有什么?(属性)二是它能做什么?(方法)



2为什么面向对象

它人类看待客观事物的一般规律。

人看到事物,首先会想到它能做什么,功能,存在的价值。并不太关心它的属性。

========================================

要注意联系实际来搞懂面向对象,比如面试这件事,实际上,公司是想测试你是否能提供 公司需要的方法,公司并不关心你实现的细节。录用后,就是开始去调用你的方法。如果不能很好的实现方法,就可能被辞退。

那么那些笔试、测试就是想看你是否有知识,知识就是属性,记住属性与方法之间是有联系的,也就是没有公司所需的知识,可以断定这个人肯定不会有公司需要的方法。

一个事物的方法的实现细节是对外界屏蔽的。

那么,之前提交的简历是什么呢,那就是一个方法列表阿,API。比如年龄22,表明你的方法可以很好的被调用;未婚,告诉别人,你可以加班,放心用。

项目1,2,3,每个项目后面一定要写上你在项目中用到什么语言,否则HR的人是不知道你想告诉他们什么,他们只关心公司想要一个有JSP开发经验,或者什么什么技术有经验的人。您叙述一大堆项目的事情,没有任何意义。所以简历不要瞎写。

面试是什么,就是想真正调用一下你的方法,测试一下。

=======================================

那么社会的运转就是各个对象的方法的相互调用。

方法列表公开,方法的实现细节屏蔽。

属性,可见和不可见

一个方法的实现细节谁知道呢?只有这个对象的生成者。



那么人看待客观世界的认识,就是通过类。人类认识的是类。

类是一系列对象的抽象,对象的模版。

一类事物,属性、方法。这类对象也肯定有这些属性和方法。



为什么面向对象的第二点,就是使得开发的系统各思其职,各尽所能。也就是低耦合,高内聚。

为什么,电脑中的部件可以很容易的更换成为其他厂商的,就是因为主板与具体部件的连接是松散的;那为什么,可以很容易的换到其他厂商的呢,是因为各个厂商遵循着标准接口。

比如硬盘的use(电源接口,数据接口),每个厂商都必须实现,而且硬盘是一个类的概念,有属性,比如尺寸。

各个厂商不能在别处下功夫,只能对硬盘内部进行调整,提高性能,才会免予被替换。

高内聚是指完成功能的最小化。

低耦合表现在提高了对象的复用性,比如中间件。



最后总结一下,面向过程是先有算法,后有数据结构。由若干个过程相互调用完成。

面向对象,则是先有数据结构,后有算法,以对象为中心,开发一系列类,拿到特定对象,通过对象之间通信,对象设计要简单。

类(共性)--〉对象(类允许对象在满足共性的同时,存在个性)

一个类,则是一个新的数据类型。



实例变量与局部变量命名冲突,则使用局部变量,除非使用this.来指定某个属性。

调用构造器只是生成对象步骤的最后一步,不是构造对象本身。

方法中使用了this,this表示当前对象,当前对象就是谁调用该方法,谁就是当前对象。

class TestClass{
String name;
public void printAll(String name)
{
   this.name = name;
}

}

上面必须添加上this.来引用实例变量name。因为在局部变量和实例变量冲突时,使用局部变量。





finalize()不是析构方法,因为不能存在真正的释放空间操作。



方法参数,简单类型传值,对象类型传引用(一个实际存储[堆中]的首地址)。

假如方法中,引用赋予一个新的对象,那么方法执行完以后,该引用和实际地址消失。传入引用所指向的对象属性不变。



Overloading,修饰符和返回值可以不同,但参数列表(参数类型个数或者排列顺序)一定要不同。

Overloading,是编译时多态。那么它要看编译时类型。

Overloading,也存在于父与子的关系当中。父有方法,子类可以有同名方法,只有参数列表不同才是重载。

构造器(构造方法可以重载),通过this();可以调用本类无参构造方法。
在其他构造器调用其它构造器,那么需要this关键字,并且必须放置于第一行。

如果一个类不写任何构造函数,系统会默认添加无参空构造方法。不要依赖系统默认行为!自己最好写上。javap查看实际代码。


对于简单类型,如果调用方法传入参数的类型不存在,那么就采用向上匹配原则进行查找。

m(byte)不存在,就用m(short)。(实际上long是int的父类,int是short的父类)



封装

属性尽可能私有。

方法尽可能公开。

private只有类内部本身能访问。

default只有同包能访问。

protected只有存在继承关系,才能访问。



posted on 2005-11-28 23:43 北国狼人的BloG 阅读(505) 评论(2)  编辑  收藏 所属分类: 达内学习总结

评论:
# re: 达内第十一天,Core Java IV 2005-11-30 00:04 | 非鱼
高内聚:模块内部依赖、关联高。

低耦合:模块之间的关联、依赖尽可能小并且单一。

在封装中,方法也是尽可能不公开的,package和protected较常见。  回复  更多评论
  
# re: 达内第十一天,Core Java IV [未登录] 2008-08-22 11:29 | 理由
达内是什么公司?软件培训吗?只听说了北大青鸟。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问