首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Java类中实例化对象范围

在Java类中实例化对象范围
EN

Stack Overflow用户
提问于 2013-09-17 05:34:26
回答 3查看 836关注 0票数 2

在声明节中实例化对象和在构造函数部分实例化对象有什么区别?

例如,

第一个案例如下:

代码语言:javascript
运行
复制
public ClassName{

    private ArrayList objectName = new Arraylist();
    public ClassName(){

    }
}

案例二如下:

代码语言:javascript
运行
复制
 public ClassName{

   public ClassName(){
           ArrayList objectName = new ArrayList();
    }
}

声明区中的objectName和构造函数区中的objectName之间有什么区别吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-17 05:47:26

范围是不同的。

案例1

代码语言:javascript
运行
复制
private ArrayList objectName = new Arraylist();

这里,objectName是一个实例变量,它在ClassName对象的实例中是可见的。这意味着您使用.运算符访问它:

代码语言:javascript
运行
复制
ClassName className = new ClassName();
className .objectName; // this is valid(assume this statements in the same class)

案例2

代码语言:javascript
运行
复制
public ClassName(){
    ArrayList objectName = new ArrayList();
}

在这里,objectName对构造函数是本地的,在ClassName的实例中不可见:

代码语言:javascript
运行
复制
   ClassName className = new ClassName();
   className .objectName; // this is invalid (compiler error)
票数 2
EN

Stack Overflow用户

发布于 2013-09-17 05:38:20

Class作用域中实例化的第一个对象对所有类方法和构造函数都是可见的。

但是您在Constructor中创建的第二个对象只对构造函数可见,除非您在类中声明它并在构造器中实例化它。

基本上,对象的声明定义了对象的作用域。有关更多细节,请参见请参阅此

票数 2
EN

Stack Overflow用户

发布于 2013-09-17 05:42:51

1)当您在costructor中创建一个对象时,只有当这个特定的构造函数真正被调用时,这个对象才会被创建,而在字段初始化期间创建的对象总是被创建的。

2)您可以创建一个对象,其构造函数仅在构造函数中抛出选中的异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18841969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档