为了账号安全,请及时绑定邮箱和手机立即绑定

类与对象的问题

背景:类是抽象的,对象是具体的。

代码

public class Order{
    private Item i = new Item();
}
class Item{}

问题:首先说明的是我非常清楚应该怎么使用,对使用没有任何问题。

以上代码中,class Order这个时候是一个抽象的类,并没有实例化。而在Order的成员变量中有一个具体的Item对象i,同时另外一个背景是:成员变量应尽量初始化而不使用默认的初始值。那么问题就是:一个抽象的概念里面,为什么会有一个具体的对象,这样子当我实例化Order对象的时候,该对象的Item成员变量是类里面的i的引用,还是每一个具体的实例化,都重新new了一个Item对象?这个时候的 class Order的成员变量Item在内存中存放的具体是什么?是一个NULL引用?还是什么?

正在回答

5 回答

属性你初始化不赋值的话默认null.你的这些问题你看视屏里应该比我说的清楚。首先创建一个包吧

在这个包里面我定义了一个Car类(车)而我在这个包里面我又定义了一个小型汽车类。然后我在定义个大型汽车类在这三个类中都有各自属性和方法。而这些类型的汽车是不是都属于car这个类。也就是主类。我写程序在car中要想用小型汽车这个类里的属性和方法是不是先要     小型汽车  变量名=new 小型汽车();才可以用这个类里面的属性和方法 。

0 回复 有任何疑惑可以回复我~
#1

Antique 提问者

感谢耐心回答。 是的,这个例子非常的明显。用法是这样的没错,不过我纠结的是,Car里面有一个小型汽车实例,那么我之后所有的new Car()创建的对象,每一个对象里是否都有一个小型汽车实例?这些小型汽车实例是同一个对象的不同的引用,还是每个Car对象中都有不同的具体的小型汽车对象。
2017-09-06 回复 有任何疑惑可以回复我~
#2

Antique 提问者

这个问题已经解决, 是我想复杂了,确实其实很简单的东西,类里面有个引用,很简单的东西。。
2017-09-07 回复 有任何疑惑可以回复我~

我现在算是职场小白。每天在补这些基础

0 回复 有任何疑惑可以回复我~

是的 new只有这个作用 没别的 到最后你用框架都不用new了懂怎么用就行了


0 回复 有任何疑惑可以回复我~
#1

Antique 提问者

我是最近在补充JVM的东西,才会来看这些,需要非常清楚每个东西在内存放在什么位置,虚拟机怎么用,不然单纯用其实还是很简单的
2017-09-08 回复 有任何疑惑可以回复我~

类里有属性和方法 属性 :张三  有年龄,名字 这就叫属性。方法就是能做什么事。就比如张三能吃饭睡觉

而你说的 void zhangsan(){

System,out.println(“张三只会吃饭睡觉”);

}

你本身的写法就错了,你写错的 那个是内部类

0 回复 有任何疑惑可以回复我~
#1

Antique 提问者

内部类我觉得这里还没有要用到。不理解的是属性是引用数据类型的时候,这个属性在初始化的时候是什么。还望赐教
2017-09-06 回复 有任何疑惑可以回复我~

首先你写的这个是什么东西,类是抽象的不错,就拿人一样,张三,李四都是属于人。而统称位抽象的人类。但是我想把张三从这个人里面具体的实例化后才可以用这个对象。说白了对象就是类的实例化具体表现。人类是一个抽象的类。而张三是属于这个类。我们要使用这个类里的张三我们先要实例化这个张三也就是创建这个张三对象

0 回复 有任何疑惑可以回复我~
#1

Antique 提问者

我这个Demo想表达的意思是:类的成员变量可以为普通数据类型(也就是8大数据类型),也可以是引用数据类型(数组或者对象),用你的Demo来表述的话应该是:Person()类有成员变量 double heigh用来表示身高,这个我觉得非常容易理解,Person()类同时还可以有成员变量 Heart h = new Heart(); 用来表示人的心脏(这里抽象成个类),我不理解的是,类的成员变量虽然默认会初始化(但是不建议这么做),那么我们要在Person中实例化Heart对象,一个抽象的Person中会有一个具体的Heart对象h,这个感觉不太能理解。
2017-09-06 回复 有任何疑惑可以回复我~
#2

Antique 提问者

同时每一个具体的Person对象中,都会有一个具体的Heart对象,比如张三对象在堆内存中会开辟一个空间存放它的Heart对象的引用,那么在类中,这个Heart又是以什么形式存在,NULL?
2017-09-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530630    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

类与对象的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信