十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
实例化对象应该理解为:为了实例化某类,创建对象。你指的两个概念实际上是一回事。描述一个类的时候,有行为(方法)和属性(成员变量),我们为了把这个类实例化,所以创建对象。 ”//实例化汽车类,即创建轿车对象” 这句是教材上的原话。
创新互联公司主要从事成都做网站、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务沙湾,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
用代码来说,Car bus = new Car(); bus是一个引用变量,它只是创建了一个Car类型的引用变量。new Car()才表示创建了新的对象。bus中存放的是对象的地址。这是一个引用变量和对象的图解:
只有使用了new关键字,才是在创建对象,或者说是在实例化。你应该了解下创建对象的实际过程。
实例化一个对象,java会在内存中生成你new出来的那个类的实例,即对象。然后可以调用这个对象的方法进行操作,获取对象的公共成员等。对非静态类来讲,不new出对象,这个类等于没用
class void 正常人{
形状 手=(描述手的形状);
形状 脚 =(描述脚的形状);
形状 头=(描述头的形状);
public 数量 手的数量=2;
public static 数量 脚的数量=2;//这句话里面多了一个static ,和上句有着相同点和不同点。看下文。
行为 走路;
行为 吃饭;
.....
....
}
class void 超人 extends 正常人{
行为 飞行;
...
...
}
这个正常人就是一个类,用于描述人的特征,所有特征。但它只是一个概念,并不是实实在在的具体的某个人。
var 正常人 黄三= new 正常人();//对人进行实例化,黄三就是人的一个实例。黄三具有正常人的特征和一切符合正常人的行为。是指的实实在在的某个人。
var 正常人 李四=new 正常人();
var 蜘蛛侠=new 超人();对超人进行实例化,蜘蛛侠就是超人的一个实例,它不仅具有正常人的特征及行为,还具有正常人所没有的特征行为。
此时,你可以控制黄三、李四或者蜘蛛侠。
黄三不幸的发生了车祸,这时我们可以通对引用黄三的手的数量来达到目的。黄三.手的数量=1;
不幸发生了大地震,全世界所有人的脚都只有一个人。我们可以修改脚的数量。 一是正常人.脚的数量=1。此时,不管是黄三,还是李四,还是超人,脚都只有一只了。以后生下来了孩子(实例话一个正常人)也只有一只脚;
二是,黄三.脚的数量=1;李四.脚的数量=1;如果还有张五,赵六。。。,你也得为一一赋值。但以后生下来的孩子(实例化一个正常人)还是有两只脚。
这就是类与实例引用的区别。当然啦,在这个程序代码里在,你可以单独修改黄三,李四或者超人的脚的数量,但是,你不能一下子使所有正常人的手都变成一只,除非为for循环。好玩反?
stu[i] = new Students(); //实例化
我们定义的类是不能拿来直接使用的,必须给类实例化,也就是说创建对象。new Students()就是将类Students类实例化一个对象,将这个对象存储在stu[i]这个数组元素中。
每个类不管你写没写构造方法,都有构造方法,Students()就是构造方法,用于创建类对象的。你写了构造方法,那么就会调用你写的构造方法,如果你没写,那么系统会自动创建一个构造方法。
如果不理解,可以这么写。
Strudents s = new Students(); //创建对象
stu[i] = s; //将对象存储给数组元素
栈内存中存放的是对象的引用即对象在堆内存中的地址,堆内存中存放的才是实际对象。而其属性如果是基本类型则存放在栈中如果是引用数据类型则存放在堆中