- 什么是类?
- 怎样定义一个类?
- 什么是对象,类和对象之间是什么关系,怎样创建一个对象?
- 对象引用和对象在内存中是如何分配的?
- 什么是类?
1. 类是具有相同的属性和功能的事物的抽象的集合,在面向对象程序设计中,人们把一类事物的静态属性和动态可以执行的操作组合在一起就得到类这个概念。
2. 类是个抽象的概念,用来模拟一类事物,一旦定义了一个类,这个类就永远存在。
比如:人,人有男人和女人,他们都有身高,体重等相同的属性,他们都具有走路,吃饭,工作等这些相同的,可动态执行的操作,所以可以定义“人类”这样一个类来包含他们相同的属性和功能。
- 怎样定义一个类?
在Java中,使用Class这个关键字来定义一个类,如下:定义一个Person类
/**
@author zst
@version 1.0
*/
public class Person{
private String name;
private int age; public void work(){ }
}
说明: 1. 类名称首字母要大写,如果要定义的类名称由多个单词组成,则每个单词的首字母都要大写2. 如果是对外公开的方法需要用“public”关键字修饰在上面Person类中:1. name,age 称为类数据成员,或字段2. work() 称为类的成员函数,或方法
- 什么是对象,类和对象之间是什么关系,怎样创建一个对象?
1. 对象是类的一个个体,是具体的,实实在在存在的事物,它有自己的生命周期,由类可以创建出对象,对象也会消亡。
2. 类一旦被建立后,就可以用这个类创建出任意个对象,然后去操作这些对象,类是抽象的,对象是具体的。
3. 对象也叫实例,是一个真实的实体。
关系: 1. 如果把对象比作是实实在在存在一辆汽车,那么类就是这辆汽车的设计图纸,当然通过设计图纸(类)还可以制造第二辆,第三辆这样的汽车(对象)。
2. 如上,通过Person类可以创建出一个叫“小明”的对象,也可以创建出另一个叫“阿黄”的对象。
创建一个对象的过程也叫类的实例化,使用new关键字来创建对象。
Person xiaoMing = new Perosn();
如上就是创建一个对象的过程:执行了两步操作:
1.Person xiaoMing:声明了一个叫xiaoMing的Person类的对象引用。
2. newPerosn():创建一个Person对象,此时xiaoMing指向创建出来的对象,也经常把xiaoMing称为对象名。
- 对象引用和对象在内存中是如何分配的?
/**
@author zst
@version 1.0
*/
class A
{
int i = 10;
int j = 10;
public static int k = 20; public void f()
{
System.out.println("我是A类对象的方法");
}
}
public class ObjectMemoryAllocation
{
public static void main(String[] args)
{
A aa = new A();
aa.f(); }
}
在上面代码中:A aa =new A(); 这行代码是创建对象的过程(类的实例化)。
A aa :声明对象的引用变量,这个变量是在栈(stack)内存中分配的,它存储着一个内存地址,该地址指向执行new A()后在堆中分配的一块内存。
new A(): 创建一个对象,该对象是在堆(heap)内存中动态分配的。
如下图:
注:
1. new出来的对象都是在堆(heap)中分配的
2. 局部变量(如对象引用变量)都是在栈(stack)中分配
3. 静态变量(被static修饰的变量)和字符串常量存储在数据段(Data Segtment)中
4. 代码段(Code Segment)中存放代码