类与对象 2006.3 nikinana@ourcnu.net Java 实用技术4 类与对象 2006.3 nikinana@ourcnu.net
面向对象的Java语言 Java语言是面向对象的语言 类是Java语言编程的基本单位(完全的面向对象) 类——用来创建对象的模版,是具体问题的抽象描述 类包含需要创建的对象的属性和方法 属性用变量描述,Java的变量有静态和非静态之分
类的声明和类体 类是用来定义对象的模版,可以用类创建对象 从语法上,类由类声明和类体组成 class class-name //类的声明 { 类的内容 //类体 }
类的命名方法 由字母、下划线、数字或者美元符号组成 第一个字母不能是数字 习惯上,类名使用英文单词描述,每个单词的一个个字母习惯使用大写 习惯上,类的名字最好可以描述出该类对象的用途
类体的组成 成员变量 方法 用来描述类对象的某种属性 构造方法 普通方法 必须与类名同名,且无返回值 用来被该类的对象(实例)调用,执行一定的算法,改变一些变量的值
类变量的定义 习惯上,将类变量定义写在类体的首部 类变量的作用范围是该类 类变量的定义方法 不能在类体中对变量值做操作 class-name variable-name; class-name variable-name=value;
方法定义 习惯上,方法名用英文单词定义,一般以小写字母开头,从方法名第二个单词开始第一个字母大写 构造方法与类名相同,且无返回值 method-type return-type method-name(param-type param-name,……) { //方法内部操作 }
构造方法 构造方法或构造函数用来在类对象创始时调用 对象声明时,只是创建一个指针,指针内容为空。 要使用对象必须先实例化 实例化时使用 new construction-method() 构造方法可以带参,也可以不带参,但需要不同的构造方法
关于多构造方法 默认构造方法——无参、无返回值 普通构造方法——有参、有返回值 参数类型和数量不得相同 没有声明的构造方法不得使用
对象的引用与实体 变量名只是一个指针 如果进行t1=t2操作,即相当于将t2指向t1的实体,这时 t1=t2指代同一个实体 Java具有垃圾收集机制,当t1=t2操作发生时,t2原有的实体便丢失在内存中。Java会自动帮你清理掉t2原有实体 使用finalize() 方法销毁对象
成员变量 动态变量与静态变量 一般变量都为动态变量,可以被改变值 以static variable-type variable-name定义的成员变量成为静态变量 定义在类属性中静态变量在字节码被加载到内存时分配内存,同类对象共享该静态变量 例4-2
常量 使用final type name方法定义常量 final修饰的内容,可以被使用,但是不能被修改
方法 Method 类方法或者静态方法 实例方法 采用static关键字修饰 静态方法不必实例化对象就可一个被调用 静态方法中不得调用类内的非静态属性 实例方法 一般意义的方法 必须被实例化的对象调用
方法的参数和返回值 方法的参数都是以类似指针的方式传递的 返回值也是以指针的方式传递的 在有些时候需要使用new、clone等方法重新实例化对象
方法的重载 重载是体现多态性的重要手段 方法重载指的是类中可以有多个重名的方法,同名的方法和方法间参数不得一样
this方法 在构造函数中使用this调用对象属性 在普通方法中使用this调用当前实例的方法或者属性 不能用this调用静态方法或属性 在方法内,如果参数和类属性同名,使用this.variable描述类属性
包和import 包是Java语言对类进行分级管理的方法 包名和目录结构对应 编译目录的概念 包的命名方法习惯上采用倒置域名的方法定义包结构 import语句用来在类中引用其它类,类似C中的#<include>
访问权限 private public protected friendly
基本数据类型所对应的数据包和类 基本数据类型所在对应的类 基本数据类型所对应的类所在数据包 Double,Float,Byte,Integer,Short,Long,Character 基本数据类型所对应的类所在数据包 java.lang.* 默认java编译器会自动import java.lang.*;