社区
Java SE
帖子详情
关于私有变量的一个问题没有明白,谁能解答一下
dongdandan
2007-04-25 09:43:12
class Test1
{
private int i=8;
public static void main(String[] args)
{
Test1 a=new Test1();
System.out.println(a.i);
}
}
对于一个类的私有变量,只能在类内部使用,并且对于实例属性不可以在static上下文中引用。
为什么这个例题没有问题,而把main方法写到另一个类里就不可以,我想知道这其中的原因,理由。
...全文
323
14
打赏
收藏
微信扫一扫
点击复制链接
分享
举报
写回复
14 条
回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
gongyali2005
2007-04-26
对于Test1里的所有方法.i是可见的.
打赏
举报
回复
赞
stevenzxl
2007-04-26
(对于一个类的私有变量,只能在类内部使用,)这点是没错的,(并且对于实例属性不可以在static上下文中引用。)这点我就不太认同了,main方法也是一种方法啊,它当然可以调用本类中的私有属性了,如果它都不能调用了,那可麻烦了!
(为什么这个例题没有问题,而把main方法写到另一个类里就不可以,)当然不行啊,私有属性只有本类中可以调用,如果其他类的main方法可以调用别的类的私用属性,那java的安全性,封装性就没了。
打赏
举报
回复
赞
jimmyjimmy
2007-04-26
对与私有变量的使用应该通过方法来实现 才能达到变量的私有
打赏
举报
回复
赞
约翰羊
2007-04-26
学习
打赏
举报
回复
赞
alex_lu
2007-04-26
MARK
打赏
举报
回复
赞
jiqimiao
2007-04-26
其实main方法是一个程序的切入点,一个程序运行首先寻找有没有main方法,所以他是static的,这是固定的。对于楼主的这个例子来说不涉及真正意义上的static,私有的属性只有类内部能访问,所以如果蒋main放入到另一个类中就不能访问私有的属性了
打赏
举报
回复
赞
maquan
2007-04-26
> 对于一个类的私有变量,只能在类内部使用,
> 并且对于实例属性不可以在static上下文中引用。
> 为什么这个例题没有问题
> 而把main方法写到另一个类里就不可以,我想知道这其中的原因,理由。
首先,楼主这个例子,并没有违背“对于一个类的私有变量,只能在类内部使用”,因为它就是在自己这个类内部的代码里来访问的。
其次,也没有违背“对于实例属性不可以在static上下文中引用”,因为,对 i 的访问是通过一个实例对象 a 进行的,虽然语句是写在一个 static 方法内部,但这并不是“static上下文”。
最后,如果把这段代码写到另一个类里,显然就违背了第一条。
打赏
举报
回复
赞
lower0661
2007-04-26
1.main方法也只是一个方法,除了可以作为默认的程序入口之外,与其他方法并没有区别。
它放在哪个类中,就属于那个类的一部分。因此也和该类的其他方法一样,可以访问该类的私有变量。所以你把一个方法(这里就是main方法)拿到类的外面,他当然就访问不到私有变量了。
2.实例属性不可以在static上下文中引用。
static部分是在类的初始化期间(介于加载和实例化之间)执行。(前几天有一个贴子讨论过)
。也就是说有main方法的时候,实例变量还没有出生呢~那让这个方法到哪里去找这个变量呢?
打赏
举报
回复
赞
For_suzhen
2007-04-26
学习
打赏
举报
回复
赞
lilifb
2007-04-25
1. main是属于Test1的,所以i对main不会隐藏,是可见的。
2. “实例属性不可以在static上下文中引用”这个说法不准确,应该是“不能直接引用”,但可以通过创建当前类的实例来引用。这里的a是Test1的一个实例,通过a来引用i,没有问题。
回答的不错
打赏
举报
回复
赞
网络咖啡
2007-04-25
关注
打赏
举报
回复
赞
brooksychen
2007-04-25
楼上说的没错。
楼主的这段代码语法上没有问题,但不推荐这样做。本来一个成员变量设为private就是为了安全,不让类外面的代码访问,如果想访问的话,一般会定义一个public的set方法返回这个值。此例中虽然main方法可以访问到i,但也正如楼主所言,只能在这个类里面访问;由于main只是一个程序的入口,假如main函数在其他类里面,原来的代码就有问题了。
打赏
举报
回复
赞
Dan1980
2007-04-25
1. main是属于Test1的,所以i对main不会隐藏,是可见的。
2. “实例属性不可以在static上下文中引用”这个说法不准确,应该是“不能直接引用”,但可以通过创建当前类的实例来引用。这里的a是Test1的一个实例,通过a来引用i,没有问题。
打赏
举报
回复
赞
adverse
2007-04-25
public static void main被认为是Test1的公有方法,所以在它自己的方法里面是可以访问到的。
打赏
举报
回复
赞
相关推荐
linux动态链接库全局
变量
共享
问题
&DLL共享数据段
进程间是相互独立的,其实完全可以看成A、B两个进程各自有一份单独的liba.so和libb.so,相应的动态库的代码段和数据段都是各个进程各自有一份的。 然后在这个基础上,由于代码段是不会被修改的,所以操作系统可以...
解惑小白苦恼:成员
变量
、局部
变量
、类
变量
、静态
变量
和实例
变量
本文将
解答
困扰小白的难题:成员
变量
、局部
变量
、类
变量
、静态
变量
和实例
变量
的区别 在本文重点开始之前,先让我们看看
变量
的声明 Java
变量
类型 在Java语言中,所有的
变量
在使用前必须声明。声明
变量
的基本格式...
java 序列化
问题
_
关于
Java序列化的
问题
你真的会吗?
但是在我看来,Java 序列化是
一个
很重要的内容,序列化不仅可以保存对象到磁盘进行持久化,还可以通过网络传输。在平时的面试当中,序列化也是经常被谈及的一块内容。谈到序列化时,大家可
能
知道将类实现...
怎么算python基础扎实_一套北京上市公司的Python面试题
解答
,让你
明白
基础扎实是多重要...
Python新手在谋求一份Python编程工作前,必须熟知Python的基础知识。既有基本的Python面试题,也有高阶版试题来指导你准备面试,试题均附有答案。面试题内容包括编码、数据结构、脚本撰写等话题。1:Python有哪些...
java面向对象
问题
_02.Java面向对象
问题
目录介绍2.0.0.1 重载和重写的区别?重载和重写绑定机制有何区别?父类的静态方法
能
否被子类重写?2.0.0.2 封装、继承、多态分别是什么?...2.0.0.5 为什么内部类调用的外部
变量
必须是final修饰的?2.0...
对js中一些
变量
操作的理解
全局作用域和局部作用域等
问题
在js中,对于函数操作
变量
的
问题
需要注意以下几点:1、js中,函数就相当于
一个
作用域。2、在js中,函数声明和
变量
声明都有提升的作用,即提升到离他们最近的作用域的头部。
变量
声明,...
java面试题(一)Java面试
问题
集
Java 基础部分 101、
一个
".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 102、Java 有
没有
goto? 103、说说&和&&的区别。 104、在 JAVA 中如何跳出当前的...
闭关多日,整理一份C++中那些重要又容易忽视的细节
文章目录基础篇喜欢用内联函数吗?头文件与名空间,好用吧!引用返回引用的高效性何时使用引用参数? 基础篇 喜欢用内联函数吗? 内联函数,都知道是什么嘛,就...在C当中,是
没有
inline这个关键字的,C要使用类似的.
Java面试宝典系列之基础面试题String、
变量
、类与对象、集合类、SSH(一)
由于Java中涉及表达式运算时的类型自动提升,我们无法用byte类型来做演示这种
问题
和现象的实验,大家可以用下面
一个
使用整数做实验的例子程序体验
一下
: int a = Integer.MAX_VALUE; int b = Integer.MAX_VALUE;...
一套iOS面试题
解答
1、有多继承吗?...但是类别有
一个
重要的限制,导致它很鸡肋,不
能
添加实便
变量
。当然这个是有解决办法的,比如存取方法,可以在其中来存取静态全局
变量
,或者使用运行时api动态添加实例
变量
。第二个方...
C语言进阶 ~ 数据类型 &
变量
&内存四区之间关系详解
p1:abcdefg2, p2:abcdefg2 p1:00582100, p2:00582100 四区图: 指针指向谁就把谁的地址赋给指针 指针
变量
和它所指向的内存空间
变量
是两个不同概念 注:如果全局区存入相同的值,则编译器会进行优化,存入
一个
值,...
python-公有和
私有
以及继承组合
(1)python的对象它自身有一些方法,他是面向对象的python的一切,它们
能
给类增加“魔力”的特殊方法,如果对象实现了这些方法中的某
一个
,那么这个方法就会在特殊情况下被python调用,而这一切都是自动发生的。...
相同进程,
一个
线程OOM,其余线程可以正常运行么?
有很多文章(有
一个
文章分别从栈,堆以及1.8之前的永久代,1.8之后的元数据区分别进行了阐述)对这个
问题
进行了阐述,首先可以确定的是 可以运行。 当
一个
线程抛出OOM(Out Of Memory)异常之后会被停止,会立刻进行...
【CS144 fa20 笔记】手摸手教你写
一个
TCP协议
阅读须知:做这个实验的时候,我计网也只
能
算
一个
初学者,所以出现错误在所难免,另外这篇博客只
能
算是我在做实验时边做边写的笔记以及实验后的一点总结,所以难免会有一些不那么正式的语句,不过我不打算对这个笔记...
2022广西三月三风俗的作文十篇.docx
2022广西三月三风俗的作文十篇.docx
公路改建工程监理工作执行报告.zip监理报告DOC文档资料下载
公路改建工程监理工作执行报告.zip监理报告DOC文档资料下载公路改建工程监理工作执行报告.zip监理报告DOC文档资料下载公路改建工程监理工作执行报告.zip监理报告DOC文档资料下载公路改建工程监理工作执行报告.zip监理报告DOC文档资料下载 1.合个人学习技术做项目参考合个人学习技术做项目参考 2.适合学生做毕业设计项目参考适合学生做毕业设计项目技术参考 3.适合小团队开发项目技术参考适合小团队开发项目技术参考
在线听•音乐网站的设计与实现_kaic.docx
摘要 Abstract 1 绪论 1.1 题目背景、目的 1.2 系统重点 2 系统相关技术 2.1 系统开发的技术要求 2.2 系统相关技术、平台和数据的选择 2.3 系统开发框架和工具库的介绍 2.4 前后端分离开发模式 3 系统需求分析 3.1 系统开发目的 3.2 性
能
需求 3.3 可行性分析 3.4 系统功
能
分析 3.5 操作流程图 3.6 需要满足的目标 4 系统概要设计 4.1 系统功
能
模块划分 4.2 数据库的设计 4.2.4 各个实体的E-R模型 5 系统详细设计 5.1 数据库表结构 5.2 管理员端设计 5.3 模块设计 6 系统实现 6.1 用户登录界面 6.2 用户注册界面 6.3 用户浏览首页信息界面 6.4 用户浏览歌单界面 6.5 用户浏览歌手界面 6.6 用户浏览我的音乐界面 6.7 管理员登录界面 7 测试与分析 7.1 测试目的 7.2 测试方法 7.3 测试环境 7.4 功
能
测试模块 结 论 参考文献 致 谢
算法 课件和源码(初中高)
算法 课件和源码(初中高)
中小学教师信息技术应用
能
力提升2.0工程《教师个人研修计划》作业.pdf,这是一份不错的文件
中小学教师信息技术应用
能
力提升2.0工程《教师个人研修计划》作业.pdf,这是一份不错的文件
2022护士节演讲比赛演讲稿.docx
2022护士节演讲比赛演讲稿.docx
发帖
Java SE
加入
微信扫一扫
点击复制链接
6.2w+
社区成员
30.7w+
社区内容
Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2007-04-25 09:43
社区公告
暂无公告