Java编程思想[一]对象

程序是写给人看的,不是写给机器看的!

 

面向对象的基本特性:万事万物皆为对象;程序是对象的集合,通过发送消息来告知彼此要做的事;每个对象都有自己的由其他对象构成的存储;每个对象都拥有其类型;某一特定类型的所有对象都可以接受同样的消息(抽象)。

 

一、每个对象都有一个接口(面向对象)

   1.所有的对象都是唯一的,但同时也是具有相同的特性和行为的对象所归属的类的一部分。

 2.创建抽象数据类型()是面向对象程序设计的基本概念之一。

    3.所有的面向对象程序设计语言都是用class这个关键词来表示数据类型。

    4.类具有相同的特性(数据元素)和行为(功能)的对象集合,所以一个类其实是一个数据类型。

   5.面向对象就是在问题空间的元素和解空间元素对象之间创建的一对一的映射。

   6.每个对象都只能满足某些请求,这些请求有对象的接口(interface)定义,决定借口的便是类型。

	<span style="white-space:pre">	</span>Light lt = new Light();
	<span style="white-space:pre">	</span>lt.on();

Light类中有on(),off(),birghten(),dim()四个类,用以实现不同用户所需的操作。

在栈中创建一个地址值,并且,在堆中开辟了对象Light()的空间,再把lt(地址值)指向(引用)开辟的空间。

定义对象的引用lt,然后调用new来创建该类型的对象。

 

二、每个对象都是服务提供者

开发或理解某一个程序时,可以将对象看为一个”服务提供者”。

程序向用户提供服务,通过调用其它的对象提供的服务来实现某一个功能。

这种方法有助于提高对象的内聚性(高内聚,低耦合;低内聚,高耦合)

 

三、被隐藏的具体实现(private 缺省 protected public)

private:私有,内部访问

缺省:同一个包访问

protected:同一个包或者子类访问

public:公有,都可访问

 

四、继承

继承:可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。若当父类发生变动,子类也会跟着改变。

子类可以通过添加新的方法覆盖(重写)父类的方法来完成你的需求。

所有类最后的父类都为Object类。

(后面章节会有详细介绍)

 

五、多态(动态绑定)

动态绑定是默认行为,不需要添加额外关键字来实现多态。

1、必须是继承或者是实现接口

2、要有重写的类(实现接口必定重写类)

3、父类的引用指向子类的对象

(后面章节会有详细介绍)

 

六、对象的创建和生命期

每个对象为了生存都需要资源,尤其是内存。

Java采用动态分配内存的方式,每当想要创建新对象时,就要使用new来构建此对象的动态实例。

在栈上创建的对象,编译器可以确定对象存活的时间,并可以自动销毁;若是在堆上创建的对象,编译器,编译器对它一无所知;需要使用垃圾回收机制”(GC)

“垃圾回收机制”GC用来处理内存释放问题,可以自动发现对象何时不再使用,并自动释放对象占用的内存。

 

七、对象

一旦创建了一个引用,就希望它能与一个新的对象关联,可以通过new来实现。

1.对象存储的地方

1)寄存器:根据需求分配,不能直接控制,不能在程序中感觉到寄存器。

2):位于通用RAM(随机访问存储器)中,可以通过指针从处理器获得支持。栈指针往下移动,分配新内存;往上移动,释放那些内存。

3):通用内存池(位于RAM),用于存放Java对象,并且编译器不需要知道存储的数据在堆里存活的时间(即使用new)。但是,用堆进行存储分配和清理可能比用栈进行存储所需的时间更多。

4)常量存储块:常量值存放于此。

5)非RAM存储:数据存活于程序之外,不受程序的控制,在程序没有运行时也存在。如流对象(IO)持久化对象(JDBCHibernate)。技巧在于,把对象转化成可以存放在其它媒介上的事物,需要时,可恢复成常规的对象。

 

2.基本数据类型

 

 

3.static修饰

static修饰的成员是属于类的,在static方法中是可以用类名直接调用。

不用static修饰的成员属于具体实例的对象的,需要用对象名调用,且在static方法中不能调用。

初始化块:

①在类的声明中,可以包含多个初始化快,另创建的实例时,就会依次执行这些代码块。如果使用static修饰初始化快,就称之为静态初始化快。

②静态初始化快只在类加载时执行,只会执行一次,同时静态初始化快只能给静态变量赋值不能初始化普通的成员变量。

③程序运行时静态初始化快最先被执行然后执行普通初始化快,最后才执行构造方法。由于静态初始化快只在类加载时执行一次,所以当再次创建对象时并未执行静态初始化快。

4.final 关键字

对域:构造对象之后不能改变它们的值。

对类:只有其中的方法自动地转变为final方法,而不包括域。

八.不要销毁对象

1.对象的作用域

Java对象不具备和基本类型一样的生命周期。当用new创建一个Java对象时,可以存活于作用域之外,如:

<span style="white-space:pre">		</span>{
<span style="white-space:pre">			</span>String s = new String( “ a ” );
<span style="white-space:pre">		</span>}

引用s在作用域中点就消失了,但是,s指向的String对象仍继续占据内存空间。

说明:当new创建的对象,只要需要,就会保留;Java有一个垃圾回收器”(GC),用来监视用new创建的所有对象,并辨别那些不会再被引用的对象,之后释放这些对象的内存空间。

2.类的创建(规范)

①保证数据的私有化。

②对数据进行初始化。

③不要在类中使用过多的数据类型。

④有的域不希望更改,而有的域则需要域访问器或修改器。

⑤将职责过多的类进行分解,但不需要分解过多。

⑥类名与方法名能够体现职责

3.基本数据类型的默认值

 

 

4.Java的语言规范

包名:多单词组成时所有字母都小写:xxxyyyzzz

类名,接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz

变量名,方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz

常量名:所有字母都大写。多单词是每个单词用下划线链接:XXX_YYY_ZZZ

 

九、注释和嵌入式文档

1.注释

/* 注释内容*/   此种注释进行编译时,/* */之间内容会被忽略。

//注释内容(单行注释)   

 

2.注释文档(javadoc)  

/** 注释内容 */

Javadoc可以解析程序内特殊注释的标签标记的信息,也会将毗邻注释的类名或方法名抽取出来。Javadoc的输出格式为HTML格式或文档标签。

注意:javadoc只能为publicprotected成员进行注释,private与缺省的注释会被忽略。

 


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值