静态方法中不能new内部类的实例对象的总结
2015-05-21 20:09
246 查看
原文
http://blog.csdn.net/zhizguoz/article/details/22483535
http://blog.csdn.net/zhizguoz/article/details/22483535
class Test{ public void main(String[] args){ A testA=new A(); //这里会出现问题 new Thread(new Runnable(){ public void run(){ testA.printout(); } }).start(); System.out.println("aaaaaa"); } class A{ public void printout(){ System.out.println("aaaaaa"); } } } /** 静态方法中不能new内部类的实例对象。这是为什么了? 内部类的最重要的一个特点就是它可以直接访问它外部类的成员变量。成员变量是 对象身上的。对象创建完成了,才会为成员变量分配空间。能调用成员变量, 意味着一定有了实例对象. main方法是静态的,它执行的时候可以不用创建那个对象。这就矛盾了。 main方法运行的时候没有任何外部类的实例对象。我们的内部类的实例对象创建了 它又可以访问外部类的成员变量,外部类的实例对象在哪儿了? 所以这个原因,我们下面的代码就要进行改写? 要想创建内部类的实例对象,必须创建外部类的实例对象。 */ // 修改之后的代码如下: class Test{ public void main(String[] args){ new Test().init(); System.out.println("aaaaaa"); } public void init(){ A testA=new TestA(); new Thread(new Runnable(){ public void run(){ testA.printout(); } }).start(); } class A{ public void printout(){ System.out.println("aaaaaa"); } } } /** 方法的调用一定是要通过对象调用的。哪个对象调用了这个方法,创建内部类实例对象 的时候 所使用的外部类的实例对象就是谁*/
相关文章推荐
- 《黑马程序员》 静态方法中不能new内部类的实例对象的总结
- 静态方法中不能new内部类的实例对象的总结
- 静态方法中不能new内部类的实例对象的总结
- 静态方法不能new内部类实例对象
- 《黑马程序员》 静态方法中不能直接创建内部类实例对象的原因
- 今天发现c#中的实例后的对象是不能调用静态方法,以前学Java的时候是可以的.
- 今天发现c#中的实例后的对象是不能调用静态方法,以前学Java的时候是可以的.
- Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库 自定义日志记录功能,按日记录,很方便 C#常量和字段以及各种方法的语法总结 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法 asp.net webapi 自定义身份验证
- 静态方法中不可直接new内部类实例对象问题
- 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法
- 外部类的静态方法内不能实例化内部类的对象
- 关于Java的泛型在所声明的对象中如何获取class或者实例的方法的总结
- 关于java中子类,父类中,静态代码块: staic{},动态代码块:{},构造方法,类属性,对象属性等执行顺序做个总结:
- java 调用静态方法和实例(对象)方法的区别
- 动态的内部类不能在静态方法中直接声明对象
- 关于Java的泛型在所声明的对象中如何获取class或者实例的方法的总结
- 静态方法不能直接调用实例方法和变量,但可以间接调用(即在静态方法中创建类的实例,然后调用)
- Java_类和对象(完美总结)_转载_覆盖和隐藏的区别,覆盖就不能使用了,而隐藏提供全局方法名或者全局变量名还可以使用
- jQuery对象合并、jQuery添加静态方法、jQuery添加DOM实例方法
- 静态方法中不能new内部类