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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何超 中级黑马   /  2013-11-28 00:13  /  1874 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 何超 于 2013-11-28 00:15 编辑
  1. import java.util.Arrays;

  2. class D
  3. {
  4.         public int a=0;
  5.         public void get(){};
  6.         public static void show(){};
  7.         public static void main(String[] args)
  8.         {
  9.                 D d=new D();
  10.                 show();
  11.                 d.a=1;
  12.                 d.get();
  13.         }
  14. }
复制代码

代码如上  主函数不是静态么 为什么可以调用非静态成员!!!

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

6 个回复

正序浏览
在这里new出来的d对象相当于其他类的对象,静态方法中不能出现实例对象的操作指的是不能用本类的对象指针引用什么一些变量或者方法,因为直接用get方法,相当于前面默认加上了this.,所以就不可以,但是它是用类似其他类的对象引用的,get方法前面加的不是this,而是d.,这样是允许的
回复 使用道具 举报
你是通过  类名.方法名   调用的非静态方法     非静态方法在主函数中就是这种调用方式的
回复 使用道具 举报
此时的的、
回复 使用道具 举报
都是public公共的,定义错误!
回复 使用道具 举报
没看到你哪里调用了非静态成员了
D d=new D();
show();    //只有这个是调用了静态的方法
d.a=1;     //这个用对象调用的
d.get();    //同样用对象调用的     如果是 get(); 就会报错

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

回复 使用道具 举报
因为 你都是 public.     
    public int a=0;
        public void get(){};
        public static void show(){};


这里用public 定义 是错误的。在一个程序中不允许 出现这种情况
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马