http://hi.baidu.com/drmfslc5/blog/item/1716d6da32b966e538012ff0.html
类 面向对象思想的重要概念
面向对象程序的设计实质就是类的设计,在分析问题域后,抽象出适当的类,完成类的属性 行为和类间通信接口的设计,从而完成一个软件系统。类也是java中一种数据类型。
首先,一个类是被定义在某个包(package)中的一个java文件中。
包 package 是类的集合。它将一些有着同一某特性的类收集在一起。通常在java文件中要用package标明编译出的.class在哪个包下。编译器在找类时,会一一搜寻classpath中的路径 有无此包。所以在用到其他包,或类库(一种jdk中以包形式出现的已经定义好的类)时,需要用import 导入包+.该类名。以使编译器能找到该类 。为了区别不同包,且由于域名通常唯一性强,包的命名规范为倒写的域名。
.java文件开始可以标明自身的类所在包,并导入其他包中的类
如下: package idv.cartoon.study.entity; //注意分号
import java.util.*; // 导包顺序规范:java库, javax库,第三方库,自己写的
import javax.swing.*
import org.springframework.core.*;
import idv.cartoon.study.factory.*; //注意分号
类的定义规范:
访问权限(public/(包)/protected/private) 类修饰符(abstract/final) (关键字)class 类名(随意定,但最好按类名标识符规范) extends 单个非final类 implements 单个或多个逗号隔开的接口 {(类体)}
其中,红字标识的部分是定义一个类所必须有的成分。 如下类的定义 :
class ClassName {} abstract class Competition extends Object implements Runnable {}
访问权限: 体现面向对象的一个重要特性 封装性 。所以只有和类有关的设计才涉及到访问权限,如果你在一个局部变量前用访问权限来修饰,一定是错误的。 所以访问权限只能在类,类的属性,类的方法前。这里主要说明类的访问权限。
默认权限(包权限) 无任何访问权限关键字修饰的类 这样的类在任何地方都可以被定义,被设计,它的可见范围是同一包下
public 权限 由public 修饰的类 必须被定义在className.java的文件中,即public的类 类名需要与文件名相同
protected /private 由两个修饰符修饰的类,必须被定义在类的内部,成为内部类的专有访问权限。但内部类是四种访问权限都可以的。其中,protected修饰的内部类可以被其属于的类及此类的子类使用。 private修饰的类只能被拥有它的类使用。 有关访问权限,后续将作总结性说明
类修饰符 abstract abstract修饰的类被称作抽象类,抽象类的特征为:不能实例化,即不能成为对象,不能被分配内存空间。但是它可以有具体的属性与方法
final final修饰的类被称作最终类 最终类的特征为:不能被继承,这里可以理解成树结构的叶结点。
class + /*className*/ + {(类体)} 定义设计类必须有的三个组成部分
extends 单个非final类 体现了面向对象的继承特性,多态特性。但是java中的继承只能是单继承。这属于规范,可以用树结构来理解。 继承的特性也符合人们对事物的理解思想,而且还减少了相同代码的复写。多态性是说一个父类可以被实例为多种子类的对象这一特性
implements 单个接口或多个用逗号隔开的接口 体现了面向对象的继承特性,多态特性。 补足了java单继承的缺失,接口通常被起名为形容词,表示一种特性,从而实现了某个接口的类具有这种特性。多态性是说一个接口可以被实例化为多种实现类的对象这一特性
进入类体中设计 类的内部 (在类体中写的部分,面向对象程序设计主要就是设计类内)
首先 关键字this。 一旦创建了一个类实例,jvm就为该对象创建了一个默认的指向自己的引用。this引用是用在方法中指代当前对象的。还有一种特殊的用法是 this(); 在类内部方法里调用构造方法。
类的属性 属性是类的静态描述。也就是说用它来描述类的静态特征,如一个三角性 有浮点类型的正值的三个边长。定义类属性的常规操作如下:属性的定义规范
{访问权限(public/(默认)/protected/private) 属性修饰符(static/final/volatile/transient/synchronized) 数据类型(八种以及其它类引用) 属性名(随意定,但最好符合属性名标识符规范) (赋值符用以初始化)= 初始化内容(八种基本类型有数字,true,等值,引用一般用null初始化) (分号);
.
.
.
}
类的方法 方法是类的动态描述。也就是说用方法描述类的动态属性。如三角形类中有个方法返回计算所得的周长值。方法还是与其他类的交互通信工具。也就是如果类的对象作用于其他类的对象或被其他类的对象作用。 {
访问权限(public/(默认)/protected/private) 方法修饰符(static/final/synchronized) 返回值数据类型(八种以及其它类引用) 方法名(随意定,但最好符合方法名标识符规范) (括号引住的参数列表)throws (异常类) (分号);/(方法体){}
}
特殊的方法 构造方法, 有关构造方法的说明在后续有关对象的初始化与清理中。
特殊的成员 块 有关块的说明在后面有关对象中成员初始化顺序中。