类(对象)之间的关系

1. 关联关系(某一个类的方法的参数是另一个类的对象) 

2. 继承关系(XX是一种XX)

3. 聚合关系(整体和部分) (XX是XX的一部分)

4. 实现关系(类似C++的纯虚函数,具体实现用子类来完成)

对象是Java程序的核心,在Java程序中“万事万物皆对象”

对象可以看成时静态属性(成员变量)和动态属性(方法)的封装体

成员变量可以是Java语言中任何一种数据类型(包括基本类型和引用类型)

在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化(所有数值类型的默认值都是0, 布尔类型初始值为false, 引用类型初始值为null)

注意:局部变量Java不会默认初始化

成员变量的作用范围为整个类体

Java语言中除基本类型之外的变量类型都称之为引用类型!!与C++不一样

Java中的对象是通过引用对其操作的,例如:String S; 这是声明了一个String类型的引用变量,会分配内存,但并没有使它指向一个对象。 S = new String("HelloWorld");使用new语句创建了一个String类型的对象并用S指向它,以后可以通过S完成对其的操作

如何在内存中区分类和对象

1. 类是静态的概念,位于代码区

2. 对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量),而方法只有一份,在执行的时候才占用内存

Java中的引用同C++中的引用不一样,Java中的引用相同于指针,而C++的引用只是一个别名

对象的创建和使用

1. 必须使用new关键字创建对象

2. 使用对象(引用).成员变量或引用对象的成员变量

3. 使用对象(方法).方法(参数列表)来调用对象的方法

4. 同一类的不同对象有不同的成员变量存储空间

5. 同一类的不同对象共享该类的方法

示例:

class C {
	        int i;
	        int j;
	        ...main..{
	             C c1 = new C();
	             C c2 = new C();
	        }
	}

代码存放在code segment中,当main方法执行的时候,先定义C类型的变量才c1(c1中的值不是实际的物理地址),会在栈中分配一个空间,然后new出一个对象在堆内存中,栈空间中的c1指向堆空间中刚new出来的那个对象.(感觉就是先创建指针再创建该指针指向的那个数据类型的实例,然后指针指向那个实例)

使用new + 构造方法 创建一个新的对象

构造方法是定义在java类中的一个用来初始化对象的函数

构造方法与类同名且没有返回值,若没有定义构造方法,系统会默认生产一个空的构造方法,若自己定义了构造方法,系统就不会生产默认构造方法。注意:默认构造方法会将所有成员变量都初始化(所有能转换为整数的类型都初始化为0,boolean初始化为false)如果构造方法前面加上了返回值,那么这个方法就变成了普通的方法,可通过对象名.成员函数名来调用