thingking in java2.11练习(3)
来源:互联网 发布:淘宝直通车点击 编辑:程序博客网 时间:2024/06/05 06:05
题目:找出含有ATypeName的代码段,将起改写成完整的程序,然后编译,运行。
含有ATypeName的代码段在书本25面,是以下两句代码:
class ATypeName {/* Class body goes here */}
ATypeName a = new ATypeName();
根据昨天所学,一个java程序想要运行,必须有一个main。
代码如下:
public class ATypeName { public static void main(String[] args) { ATypeName a = new ATypeName(); }}
不过,当笔者尝试用另一种写法时,却出错了
public class test2_3 { public static void main(String[] args) { ATypeName A = new ATypeName(); } class ATypeName { }}
编译器报错:无法从静态上下文中引用非静态方法this
我们知道,程序运行先加载的是所有静态对象,而main又是所有静态对象里第一个被加载的,由于ATypeName()对象属于test2_3()对象,此时
test2_3()对象还未实例化,自然找不到它的内部类ATypeName()。要想解决这个问题,有两种方法,一种是给ATypeName()加上static。这时程序就能顺利运行。另一种就是先实例化test2_3()对象,再实例化ATypeName(),代码如下:
ATypeName A = new test2_3().new ATypeName();
同样的道理,静态方法中同样不能调用非静态方法和非静态变量,要想调用,要先实例对应的类再调用。
这里因为涉及到内部类的问题,所以显的有些复杂,关于内部类暂不深究。
以上。
0 0
- thingking in java2.11练习(3)
- thingking in java2.11练习(4)(5)
- thingking in java test2.11练习(6)
- thingking in java test2.11练习(8)
- thingking in java 2.11练习(1)
- thingking in java test2.11练习(10)以及IDE中args的提前输入
- thingking in Java test3.7练习(5)(6)
- thingking in java test3.8练习(8)(9)
- thingKing in Java test3.8练习(7)扔硬币
- thingking in java test2.11(11)
- thingking in java读书笔记3
- thingking in java test5.9练习(19)(20)(21)(22)
- thingking in java 2.11练习(2)(先有static还是先有main?)
- thingking in Java 字符串
- thingking in Java 泛型
- thingking in Java 数组
- thingking in Java 注解
- thingking in Java 并发
- [李景山php]thinkphp核心源码注释|Apachenote.class.php
- spring配置事务处理的五种方式
- 基于双卡尔曼滤波算法的电池SOC估计
- 安装Vm12
- Ubuntu下配置Eclipse调试环境
- thingking in java2.11练习(3)
- HDU1397 POJ2909 UVA686 UVALive5674 Goldbach's Conjecture(II)
- HDU2818加权并查集
- QTableWidget的用法总结
- [李景山php]thinkphp核心源码注释|Apc.class.php
- poj 3278 || hdu2717 Catch That Cow 人生第一道BFS
- 简单功能强大的jQuery图片剪裁插件Image Cropper
- [李景山php]thinkphp核心源码注释|Db.class.php
- 2.IOS>UI>UIView