1.一些基本概念
-
面向对象程序设计 ( OOP ) 就是使用对象进行程序设计。
-
对象 ( object ) 代表现实世界中可以明确标识的一个实体 。 例如 : 一个学生 、 一张桌子 、 一个圆 、 一个按钮甚至一笔贷款都可以看作是一个对象 。 每个对象都有自己独特的标识 、 属性和行为 。
- 一个对象的属性是由具有当前值的数据域来表示的 。 例如 : 圆对象具有一个数据域 radius , 它是标识圆的属性 。一个矩形对象具有数据域 width 和 height , 它们都是描述矩形的属性 。
- — 个对象的行为是由方法定义的 。 调用对象的一个方法就是要求对象完成一个动作 。 例如 : 可以为圆对象定义一个名为 getAreaO和 getPerimeter ( ) 的 方 法 。 圆 对 象 可 以 调 用 getArea ( ) 返 回 圆 的 面 积 , 调 用getPerimeter ( ) 返回它的周长 。 还可以定义 setRadius ( radius ) 方法 。 圆对象可以调用这个方法来修改它的半径 。
-
使用一个通用类来定义同一类型的对象 。 类是一个模板,用来定义对象的数据域是什么以及方法是做什么的 。 一个对象是类的一个实例 。 可以从一个类中创建多个实例 。 创建实例的过程称为实例化 ( instantiation ) 。
-
可以把两个类放在同一个文件中 , 但是文件中只能有一个类是公共 ( public ) 类 。 此外 ,公共类必须与文件同名 。 因此 , 文件名就应该是 TestSimpleCircle . java , 因为 TestSimple -Circle 是公共的 。 源代码中的每个类编译成 . class 文件 。 当编译 TestSimpleCircle . java 时 ,产生两个类文件 TestSimpleCircle . class 和 SimpleCircle . class , 如图 9 - 5 所示 。
-
要点提示 : 构造方法在使用new 操作符创建对象的时候被调用 。
构造方法是一种特殊的方法 。 它们有以下三个特殊性 :
- 构造方法必须具备和所在类相同的名字 。
- 构造方法没有返回值类型 , 甚至连 void 也没有 。
- 构造方法是在创建一个对象使用 new 操作符时调用的 。 构造方法的作用是初始化对象 。
- 构造方法具有和定义它的类完全相同的名字 。 和所有其他方法一样 , 构造方法也可以重
载 ( 也就是说 , 可以有多个同名的构造方法 , 但它们要有不同的签名 ) , 这样更易于用不同
的初始数据值来构造对象 。
-
基本类型变量和引用类型变量的区别
对基本类型变量来说 , 对应内存所存储的值是基本类型值 。
对引用类型变量来说 , 对应内存所存储的值是一个引用 , 是对象的存储地址 。
赋值时:
对基本类型变量而言 , 就是将一个变量的实际值陚给另一个变量 。i=j将基本类型变量j的内容复制给基本类型变量i。
对引用类型变量而言 , 就是将一个变量的引用赋给另一个变量 。 对引用变量来讲 , 赋值语句 c1= c 2 是将 c 2 的引用赋给 cl 。 赋值之后 , 变量c1和 c2 指向同一个对象 。
执行完赋值语句
-
静态变量、常量和方法
静态变量将变量值存储在一个公共的内存地址 。 因为它是公共的地址 ,所以如果某一个对象修改了静态变量的值 , 那么同一个类的所有对象都会受到影响 。
无须创建类的实例就可以调用静态方法 ( static method ) 。
类中的常量是被该类的所有对象所共享的 。 因此 , 常量应该声明为 final static , 例如 ,Math 类中的常量 PI 是如下定义的 :final static double PI=3.14159265358979323846
-
可见性修饰符
可见性修饰符可以用于确定一个类以及它的成员的可见性 。
public 修饰符:表示它们可以被任何其他的类访问 。
如果没有使用可见性修饰符 , 那么则默认类 、 方法和数据域是可以被同一个包中的任何一个类访问的 。
private 修饰符限定方法和数据域只能在它自己的类中被访问 -
传参(对象是传引用的拷贝,就是地址值,基本类型传值)
-
不可变对象和类
要使一个类成为不可变的 , 它必须满足下面的要求 :
所有数据域都是私有的 。
没有修改器方法 。
没有一个返回指向可变数据域的引用的访问器方法 。 -
变置的作用域
实例变量和静态变量的作用域是整个类 , 无论变量是在哪里声明的 。
如果一个局部变量和一个类变量具有相同的名字 , 那么局部变量优先 . 而同名的类变量将被隐藏 。
f.p()的打印输出是 : X 为1 , y 为 0 。
-
this引用
- 使用 this 引用隐藏数据域。
this 关键字可以用于引用类的隐藏數据域 。 例如 , 在数据域的 set 方法中 , 经常将数据域名用作参数名 。 在这种情况下 , 这个数据域在 set 方法中被隐藏 。 为了给它设置新值 ,需要在方法中引用隐藏的数据域名 。 隐藏的静态变量可以简单地通过 “ 类名 . 静态变量 ” 的方式引用 。
- 使用 this 引用隐藏数据域。
-
使用 this 调用构造方法