首页 新闻 会员 周边

Java创建对象中;小白低级的疑惑;望各位大佬多多指教!

0
悬赏园豆:10 [已解决问题] 解决于 2017-04-19 01:07

Person p = new Person();

new Person();这句话中new Person;是在创建对象;()只是在创建对象时附带的调用构造;这样理解对吗;对象是真实存在的;话虽然那么说new了一个对象;那是实例化的一个过程;过程完了之后那个对象的实例又在哪呢;

Person p 是申明一个引用;引用就是个指针;我随意申明个指针指向对象也可以的.可是不行;为什么?

Person 准确的说是自己创的抽象的数据类型;而不是抽象类;对吧!

问题补充:

我这错得..连错误都没人想指出...

小梁丶的主页 小梁丶 | 初学一级 | 园豆:172
提问于:2017-04-16 13:45
< >
分享
最佳答案
0

你问题问的很混乱...

  1. Person 准确的说是自己创的抽象的数据类型;而不是抽象类.这句话前面是对的;Person是你自定义的类,类可以看作一种数据类型;但后面这句,你扯出了另外一个概念(可能你是无意的),抽象类是不能实例化的(不能new)。
  2. Person p 是申明一个引用;引用就是个指针;我随意申明个指针指向对象也可以的.这句话也没错。可是不行,为什么? 因为p声明的是Person类型,只限于指向Person及其子孙类。就像int i= 5;可以i=1;i=2;但不可以i="hello world".
  3. new Person(),这个地方不知道你看什么书看来的,我是没见过new Person和()分开说的。这个地方就是对象正式开始实例化了。这句话执行完就意味着内存的某个地方有一个实实在在的Person对象(对象就是实例),它有具体的名字、年龄...这些属性,也有say“你好”...这些方法(赋予它姓名、年龄、say“你好”等等这些都是 new 构造函数的作用,但赋予它姓名属性不代表赋予了它姓名,有可能这个阶段还没有给它起具体的名字)。
收获园豆:10
codingHeart | 小虾三级 |园豆:1511 | 2017-04-17 14:40
其他回答(1)
0

通过调用构造函数来创建一个对象..

你可以把new当成申请一块内存空间.这时这个内存是啥也么有的.然后调用构造函数来初始化这块内存

吴瑞祥 | 园豆:29449 (高人七级) | 2017-04-16 22:11

构造函数初始化是不是在描述对象;构造对象;让其体现出来

支持(0) 反对(0) 小梁丶 | 园豆:172 (初学一级) | 2017-04-16 22:15

@小梁丶: 看不懂.就是弄一块内存.然后将这个内存初始化为对应的类型.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-04-16 22:18

@吴瑞祥: 就是调有参构造是创建一个对象时就用属性描述对象;而调用无参构造是创建一个对象;之后在用属性描述对象;

支持(0) 反对(0) 小梁丶 | 园豆:172 (初学一级) | 2017-04-16 22:21

@吴瑞祥: 那块内存就是存储对象的属性是吗?

支持(0) 反对(0) 小梁丶 | 园豆:172 (初学一级) | 2017-04-16 22:32

@小梁丶: 这块内存怎么用学问就大了.我是不会的.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-04-16 22:47

@吴瑞祥: 按照刚刚接触对象;可以那样理解吗?

支持(0) 反对(0) 小梁丶 | 园豆:172 (初学一级) | 2017-04-16 23:12

@小梁丶: 刚入你要学的不是这个..是语法.

你先把语法学会了.再来想这些.

比如:基类的泛型静态成员.在不同的泛型实现中.是不是不同的成员?

想学内存中的具体实现.就去从C/c++开始学.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-04-17 10:21

@小梁丶: 对象的属性会放在对象的地址空间里,但方法,静态变量这些会放到类的公共空间里,所有这个类的实例对象公用

支持(0) 反对(0) codingHeart | 园豆:1511 (小虾三级) | 2017-04-17 15:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册