4 回答
TA贡献1793条经验 获得超6个赞
[code="java"]
public class ae{
public ae(){
new ca() // 不可以
System.out.println("2");
}
[/code]
1.内部类默认有一个指向外部内的引用。外部类没有指向内部类的引用。
2.像上面这种代码在显示中也不存在任何意义。编译器就不让内部类创建外部类的
对象,可以在外部类中申明一个成员变量为外部类对象,供内部类引用。
TA贡献1828条经验 获得超4个赞
哦,看错字符了。
你的类名启的真奇葩啊,首字母要大写
Ca 的构造方法是私有的啊,只有内部可以访问,它之外的对象都不能访问
先不看构造方法了,就单看一般的方法
public class A{
private void privatehHllo(){
//sysout
}
public void publicHello(){
hello();
}
}
public class B{
public static void main(String args[]){
A a = new A();
//a.privatehHllo() 不可以调用
//a.publicHello() 可以调用
}
}
TA贡献2016条经验 获得超9个赞
1、ca这个类虽然定义在ae这个类的文件中,但是ca不是ae的内部类,ae也不是ca的内部类,他俩基本上没啥关系,除了在一个包内之外;
2、不能再ae的构造器中访问ca的构造器,有以下几个原因;
1、ca这个类只提供了一个构造器;
2、这个构造器还是私有的。
3、LZ你 new ca()语句少写了一个“;”
基于以上分析:LZ的这个例子跟内部类关系不大。
如何修正呢:
1、为ca提供公开的构造器;
2、把那个“该死的”“;”补上。
建议LZ把上面的代码拷到Eclipse尝试编译一下,相信会容易明白很多。
添加回答
举报