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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gm1314 中级黑马   /  2014-8-7 07:09  /  6367 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

是不得通过对象调用

17 个回复

倒序浏览
肯定不可以,静态方法只能调用静态方法, 
静态方法与非静态方法:
    1、静态方法属于类所有,随类的加载加载。实例方法随对象的创建而加载。
只有通过实例对象才能调用方法。静态方法没有实例,也就不能
    2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。
    3、因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存,
    4.  静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。
    5.  静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存.
回复 使用道具 举报
学习学习
回复 使用道具 举报
嗯 应该只能创建新对象了
回复 使用道具 举报
静态方法只能访问静态的方法,非静态的方法既能访问静态方法又能访问非静态方法。简言之,非静态的能访问非静态的和静态的,静态的只能访问静态的。
回复 使用道具 举报
2楼讲的很详细
回复 使用道具 举报
不可以,非静态可以调用静态的,静态可以调用静态,非静态的必须通过new关键字吧,
回复 使用道具 举报
liqi 中级黑马 2014-8-7 15:10:08
8#
可以这样理解,静态方法是死的, 随着类的加载而加载,加载后就不变
非静态是活的,和类的对象改变而改变。但是用对象调用,这个方法就和这个对象匹配了,相对于这个对象而言是死的,是固定的。
所以不确定的不能调用  静态不能调用非静态的
对象调用非静态,因为非静态方法对于对象而言是固定的,在对象实例化时以和对象匹配
回复 使用道具 举报
静态方法调用非静态方法好像必须要通过创建对象去调用!
回复 使用道具 举报
不可以。静态方法只能调用静态。
回复 使用道具 举报
=====================通过new对象可以===========
  1. public static void staticMethod(){//静态方法
  2.                 System.out.println("进入静态方法");
  3.                 new Test().commonMethod();//调用普通方法
  4.         }
  5.         public void commonMethod(){//普通方法
  6.                 System.out.println("我是普通方法");
  7.         }
  8.         public static void main(String[] args) {
  9.                 staticMethod();//调用静态方法
  10.         }
复制代码

/*结果:
进入静态方法
我是普通方法

*/
回复 使用道具 举报
2楼讲的很精彩,总结的也很详细!
回复 使用道具 举报
通过创建对象,就可以调用了
回复 使用道具 举报
如果这个对象中有非静态方法的话那是可以调用的,因为非静态方法就是用new出来的对象调用的
回复 使用道具 举报
根本就不可以,你就不要想了.你可以自己试一下,你看看报不报错就知道了。
回复 使用道具 举报
静态不能调用非静态。 我一直这么记的。
回复 使用道具 举报
在一个类中的静态方法不能直接调用非静态方法,需创建对象去调用非静态方法,而非静态方法可以直接调用静态方法与非静态方法。
回复 使用道具 举报
不可以 老毕讲过
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马