读书人

这些为什么都不行呢?请问

发布时间: 2012-01-01 23:10:55 作者: rapoo

这些为什么都不行呢?请教
1
class a
{
a A=new a();
a() {
}
void c() {
}
}
class b
{
a B;
void f()
{ B.c();
}
public static void main(String[] args)

{ b test = new b();//这是初始创建的对象
b n; //
n.f(); //这样为什么不行
}
}
2
class a
{
a A=new a();
a() {
}
void c() {
}
}
class b
{
void f()
{ a B; //这样也不行
B.c();
}
public static void main(String[] args)

{ b = new b();
test.f();
}
}
3
class a
{
a() {
}
void c() {
}
}
class b
{
void f()
{ a A=new a();
a B; //这样还不行
B.c();
}
public static void main(String[] args)

{ b = new b();
test.f();
}
}
反正以上都是报错
只有把a 的引用放到所有的方法之外 非静态的方法才能用对象的引用去调用方法
在静态的方法中还不能建立个引用去调用方法 只能是用 创建的对象去调用这又是为什么?为什么非静态的就能用引用去调用方法呢?而且引用一定要在个方法之外呢?



[解决办法]
晕,看得头晕晕的
看得进度和你差不多,试着回答你一下问题,不知道对不对
第一个问题
class a
{
a A=new a();
a() {
}
void c() {
}
}
class b
{
a B;
void f()
{ B.c();
}
public static void main(String[] args)

{ b test = new b();//这是初始创建的对象
b n; //
n.f(); //这样为什么不行 在静态方法中调用实例方法,必须要创建一个对象能调用,而你这里之是申明了一个变量,所以错误。
}
}
[解决办法]
第一个问题,n没有初始化,也就无法调用方法f();而class b 中的B是类成员,程序自动初始化;
第二个问题,和上面的差不多,B不属于类成员了,也就是说没法自动初始化造成;
第三个问题,和第二个问题一样

读书人网 >J2SE开发

热点推荐