在Java世界中一切都被视为对象。尽管一切都看做对象,但操作的标识符实际上就是一个对象的引用,也就是说你拥有一个引用,并不一定需要一个对象与它关联。因此在操作一个对象之前,则可以先创建一个引用,例如:
String s; // 这是一个String类对象的引用
这里创建的只是引用,并不是对象,这是调用s返回消息那么就会显示错误。 所以必须创建对象。
一旦创建了 一个引用,就希望它与一个对象关联,通常用new操作符来实现这一个目的。 例如:
s = new String();
一个对象是如何 存储在内存中的呢?
- 寄存器:这是最快的存储区,但是 数量极其有限,所以我们不能直接控制寄存器,在程序中也感觉不到寄存器的存在。
- 堆栈:位于通用RAM(随机访问存储器中)这是一个快速有效的储存方法。创建程序是Java系统必须知道所有存储在堆栈中的所有项的生命周期,这点约束了程序的灵活性,所以堆栈中-存储引用,但是java对象并不在其中
- 堆:内存池中没有生命周期的限定,所以在这个区域内存储java对象。
9.1 类
类是决定对象外观和行为的类型。通过class关键字创建, 后面紧跟类名:例如:
class People{
/* 这是一个类 */
}
那么现在我们就可以来创建一个类的对象:
People people = new People(); // 创建People类型的对象
现在这个类没有定义方法和属性,它什么都不能做。
9.1.1 字段和方法
一旦定义了一个类那么就可以在类中定义两个元素:
- 字段: 是任何一种数据类型的引用,也可以是任何一种基本数据类型的一种
- 方法: 这个操作字段,或者是行为
例如:
人有姓名: 可以在People类中定义一个String类型的字段存储名字
人说出自己的名字,定义一个方法说出自己名字:
/**
* 定义一people类
* @ClassName: People
* @Description: TODO(这里用一句话描述这个类的作用)
* @author zjkorder
* @date 2015年12月11日 下午1:21:57
*
*/
class People{
String name = "张三"; // 定义String类型的字段储存张三的名字
/**
* 定义一个方法叫自我介绍 来说出自己的名字
* @Title: introduceMyself
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param 设定文件
* @return void
* @throws
*
*/
public void introduceMyself(){
System.out.println("我叫"+name);
}
}
在类中的字段都有默认值,基本数据类型的默认值是:
Boolean | False |
Char | Null |
Byte | 0 |
Short | 0 |
Int | 0 |
Long | 0L |
Float | 0.0f |
Double | o.0 |
9.1.2 方法
方法的基本组成部分包括:名称,参数,返回值和方法体
9.1.3面向对象的三个特性:
封装性:就是将数据和数据的操作封装在一起,
继承: 子类可以继承父类的属性和功能,即子类继承了父类所有的数据和数据上的操作,同时又可以添加子类独有的数据和数据上的操作。
多态:有两种意义上的多态
操作名称的多态:即多个操作具有相同的名字,但这些消息所接收的消息类型必须不同。
和继承有关的多态:同一个操作被不同类型对象调用时可能产生不同的行为。