本帖最后由 cookie110 于 2012-7-27 20:02 编辑
class A //创建一个外部类A
{
private int a; //这个属性只能在class A的有效范围内修改和调用,如果不加private,可以直接在此类外的类修改a的值
private void Ametod1()
{
System.out.println("这是一个私有方法,a的值更改为:"+a); //次方法只能在class A的有效范围内调用,如果不加prinvate可以在可以直接在此类外的类调用
}
class AInClass //创建外部类A的一个内部类AInClass 问题:这里使用static修饰符,在编译时为何为提示(限定的新静态类)的错误
{
AInClass(int x) //创建此类的一个带int类型x型参的构造函数来修改外部类中的私有成员,并调用外部类A中的Amethod1()方法
{
//A modifyAClass = new A(); //创建外部类A的一个实例对象并引用给变量ModifyAClass,(此过程中会开辟一个新的内存空间,存放类A中的成员,并初始化为空值)
//modifyAClass.a=x; //将x的值赋值给ModifyAClass对象的私有属性a
new A().a=x;//
//modifyAClass().Ametod1();// 错误: 找不到符号
new A().Ametod1(); //创建外部类A的一个实例的私有方法Ametod1()
}
}
}
class B //创建一个外部类B
{
void SetAx(int x) //创建一个只有一个整形形参x,不需要返回类型的方法成员SetAx
{
new A().new AInClass(x); //创建外部类A的实例并创建A的内部类AIClass类的实例,创建AIClass类实例后会自动调用构造函数AInClass(int x);
}
}
class test
{
public static void main(String[] args)
{
B ClassB= new B(); //创建一个外部B类的实际对象,引用给变量名ClassB
ClassB.SetAx(1); //调用ClassB对象的SetAx()方法并传递整数常量10给SetAx()处理;
}
}
问题:
1.以上程序为何要同时在私有属性a和私有方法Ametod1() 前加static才能更改程序的属性,否则会初始化为0
2.内部类访问外部类的有几种方法,每种方法通常在什么时候使用?
3.外部类调用另一个外部类的内存过程是怎样的,有几种方法在什么范围类可以可以调用外部类的内部类,各有什么优点?
|