Java对象(一)
Java对象(一)
博主通过4个月的时间总算把《Java编程思想》这本书看完了,也对面向对象编程有了一个更加深刻的认识,所以写了这一次的Java对象系列,就当是读后感了吧。
类是面向对象语言中最重要的一种数据类型,类声明的变量称为对象。
类是创建对象的模板,当使用一个类创建一个对象时,也称给出了这个类的一个实例创建对象。
1. 对象的声明
一般格式如下:
类的名字 对象名字;
例:
People people
这里 People 是一个类的名字,people是声明的对象的名字。
2.为声明的对象分配内存
使用 new 运算符和类的构造方法为声明的对象分配内存,即创建对象。
如果类中没有构造方法,系统会调用默认的构造方法。
默认的构造方法是无参数的,且方法体中没有语句。
例:
people= new People();
详细得说:
class People{ //创建一个类,赋予一些属性
float height,weight;
String head,ear,hand,foot,mouth;
void speak(String s){
System.out.println(s);
}
}
public class test{
public static void main(String[] args){
People people; //声明对象
people= new People (); //为对象分配内存,使用new运算符和默认的构造方法
}
}
class Point{
int x,y;
Point(int a,int b){
x = a;
y = b;
}
}
public class test1{
public static void main(String[] args){
Point point1,point2; //声明对象point1和point2
point1 = new Point(10,10); //为对象分配内存,使用new和类中的构造方法
point2 = new Point(12,21); //为对象分配内存,使用new和类中的构造方法
}
}
如果类中定义了一个或多个构造方法,那么 Java 不提供默认的构造方法。上述例子中的 Point 类提供了一个构造。
方法但没有提供无参数的构造方法。
例:
//这么创建对象是非法的
point1 = new Point();
point2 = new Point();
3.对象的内存模型
声明对象时的内存模型
当用 People 类声明一个变量 people,即对象 people时:
People people;
内存模型如下图所示:
people
声明对象变量 people后,people的内存中还没有任何数据,称这时的 people是一个空对象。空对象不能使用,因为它还没有得到任何“实体”,必须再进行行为对象分配内存的步骤,即为对象分配实体。
对象分配内存后的内存模型
people= new People();
关键处,此处来一个华丽的分割线
首先为 People 类中的成员变量 height、weight、head、ear、mouth、hand 和 foot 分别分配内存,即People 类的成员变量被分配内存空间,然后执行构造方法中的语句。如果成员变量在声明时没有指定初值,所使用的构造方法也没有对成员变量进行初始化操作,那么,对于整型变量,默认初值是 0;对于浮点型,默认初值是 0.0;对于boolean 型,默认初值是 false;对于引用型,默认初值是 null。
接下来给出一个信息,已确保这些变量是属于对象 people的,即这些内存单元将由 people操作管理。为了做到这一点,new 运算符在为变量 height、weight、head、ear、mouth、hand、foot 分配内存后,将返回一个引用给对象 people,也就是返回一个“号码”(该号码包含着代表这些成员变量内存位置和相关的重要信息)给people。不妨认为这个引用就是 people在内存中的名字,而且这个名字(引用)是 Java 系统确保分配给height、weight、head、ear、mouth、hand、foot 的内存单元将由 people“操作管理”。
那我们称分配给 height、weight、head、ear、mouth、hand、foot 的内存单元属于对象 people的实体,即这些变量是属于 people的。所谓为对象分配内存,就是指为它分配变量,并获得一个引用,以确保这些变量由它来“操作管理”。
为对象分配内存后,内存模型由声明对象时的模型变成了如下所示:
当然大家想要创建一个真实的people,那么可以对自己的 height、weight、head、ear、mouth、hand、foot 进行操作,改变自己的状态。在进行对象的声明时,也可以同时初始化该对象,即分配内存空间。例如:
People people= new People ();
这即是我们最常用的创建对象的方法,关于创建对象,大家可以回顾我之前 java中创建对象的几种方式解析——不止只有New 的这篇文章,在此不再赘述。
一个类通过使用 new 运算符可以创建多个不同对象,这些对象将被分配不同的内存空间,因此改变其中一个对象的状态不会影响其他对象的状态。
例如:
man= new People();
woman= new People();
这个读后感后面还是会继续添加,我们都是站在巨人的肩膀上学习,往往越简单的东西才越值得我们去深刻研究,希望对大家有所帮助,也算是对自己的一份交代,好学若饥,谦卑若愚!投身Java,但是我们不止会New!
上一篇: 抽象类 接口
下一篇: python3-豆瓣电影数据爬取