A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhouchao 中级黑马   /  2013-7-5 11:26  /  1351 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zhouchao 于 2013-7-20 11:19 编辑

求教!! 静态方法只能调用静态变量
但是
class StaticTest
{
    String name;
    public void show()
    {
        System.out.println(name);
    }
    public static void main(String[] args)
    {
        show();//静态方法只能调用静态方法,而静态方法却只能访问静态变量,如果在主函数中要输出非静态name该如何解决
    }

}



7 个回复

倒序浏览
new个实例对象调用
回复 使用道具 举报
王靖远 发表于 2013-7-5 12:06
new个实例对象调用

那是否是主函数访问 实例对象 而实例对象调用非静态方法和属性呢
回复 使用道具 举报
zhouchao 发表于 2013-7-5 12:21
那是否是主函数访问 实例对象 而实例对象调用非静态方法和属性呢

主函数和主函数所在的类没什么关系,主函数是程序的入口。虚拟机创建实例对象,实例对象调用该实例所在类的非静态方法和属性。
回复 使用道具 举报
王靖远 发表于 2013-7-5 12:25
主函数和主函数所在的类没什么关系,主函数是程序的入口。虚拟机创建实例对象,实例对象调用该实例所在类 ...

哦 谢谢!
回复 使用道具 举报
用java的反射技术可以实现
回复 使用道具 举报
ヾ浅蓝╮深蓝ゞ 发表于 2013-7-5 12:38
用java的反射技术可以实现

请问该如何实现呢?
回复 使用道具 举报
额  我想问到这样的问题 必然是还没有理解到 什么是类,什么是对象的问题上。。。。。
类,在我以计算机硬件的方面来分析,它是一块内存分配的模式,类 就是告诉虚拟机 如何使用这块内存,是一个如何分配内存的计划。。。
而对象  是在内存中存在的东西,就是用1010这样已经在内存中规划好了的,能使用的
现在String 在类中 就是告诉虚拟机,我要开辟个这样的空间  存个这样的东西进去,但是就是告诉它一个想法,还没在内存中存在。
当你使用 new 关键字的时候,内存就会根据你这个new 之后的类 的计划详细的分配到内存中,这个时候你才可以使用它。
其实类中的方法一旦加上static  这个方法便不再是对象的方法了,而是类的方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马