本帖最后由 段旭东 于 2013-4-16 02:05 编辑
答题开始:
从功能和定义上来说:
方法中声明内部类,目的只是由外部类来控制内部类的可见性,
将一个类放到一个方法当中去定义的时候,那么就限定了这个类的使用范围只能在方法的内部,
我们只是代码这样写而已,不要理解成为在这个方法内部有一个类,这个类是方法的一部分,目的是为了控制内部类的可见性
内部类是一个独立的个体,他们就是两个类而已,他们各自都有自己
的成员变量和方法。
那么这个在方法中声明的内部类里面当然不能访问该方法的局部变量了,他们就是各自单独的两个类,
你在一个类里面可以通过该类引用访问他的成员变量或者方法,
但是方法中内部声明的局部变量的作用域只是这个方法内部,你无法访问这个局部变量。
通俗的举个例子:
你可以看作是两个圈,小圈只能认识他内部的方法变量,不会认识小圈外的东西也就是局部变量,也就是说内部类在定义及实现时根本不知道他的圈外定义了什么!好比一块钱能买5毛的东西,但是5毛却无权买1块钱的东西!
PS:内部类的功能
1.解决多继承
2.解决继承和实现接口时候方法名冲突情况
3.实现数据隐藏
你的第二问:附上代码一组
package com.itheima;
/* 创建一个包含实例内部类的类,外部类中定义一个名为str的String字符串并初始化任意值,
* 在内部类中定义跟外部类同种类型且同名的变量,并在内部类中定义一个方法,分别打印外部类和内部类的变量。
*
* */
public class Test5 {
public static void main(String[] args){
// 建立一个内部类对象,同时需一起建立外部类对象
d.x out=new d().new x();
//调用内部类方法
out.print();
}
}
//创建一个名为d的 外部类
class d{
//外部类中定义一个名为str的String的字符串并初始化值为“段旭东”
String str="段旭东";
class x{//创建一个 内部类X
//在内部类中定义跟外部类同类型的同名变量
String str="段明玉";
//在内部类中定义一个方法
void print(){
System.out.println("外部类str="+d.this.str);//在this前打上类名调用外部类变量
System.out.println("内部类str="+this.str);//this可以直接调用内部类变量
}
}
}
|