java 内部类(内置类,嵌套类)
来源:互联网 发布:大数据与国家安全 编辑:程序博客网 时间:2024/06/06 16:23
作用:
当内部类需要访问另一个类的成员变量时。可以简化编程,使代码模块性更强。
限制:
外部类不能访问内部类的成员变量
当内部类设成静态类时,就相当于外部类了。
访问方法中的局部变量时,必须在变量前加上final关键字,并给变量初始化方可使用
形式:
在类中定义,在方法中定义
例题说明:
内部类可以直接访问外部类的成员变量,在该类中保存了外部类对象的引用变量(对象.this),
当方法使用的变量不存在内部类中时,该类对this的引用会传递到外部类对象的引用上。
DEMO:
public class InnerClassVisitOuterVariable {
int outNum=123;
public static void main(String[] args) {
InnerClassVisitOuterVariable out=new InnerClassVisitOuterVariable();
out.VisitInnerClass();
}
public void VisitInnerClass(){
InnerClass inner=new InnerClass();
inner.ShowInfo();
}
//定义内部类,当外部其他类需要访问是在在class前增加public
class InnerClass{
public void ShowInfo(){
System.out.println("outNum的值是:"+outNum);
}
}
}
----------------------------------------------------------------------------------------------------------
外部其他类访问内部类:
1,在内部类设置public访问修饰符
2,实例化该内部类的外部类。
3,通过2的实例对象,实例化内部类(即外部类名.内部类 对象名=外部类对象.new 内部类名)
DEMO:
public class OutClassAppInnerClass {
public static void main(String[] args) {
InnerClassVisitOuterVariable obj=new InnerClassVisitOuterVariable();
InnerClassVisitOuterVariable.InnerClass inner=obj.new InnerClass();
inner.ShowInfo();
}
}
----------------------------------------------------------------------------------------------------------
当成员变量名相同时的访问方式:
1,内部类:this.变量名
2,外部类:外部类名.this.变量名
3,内部方法参数:直接变量名
DEMO:
public class InnerClassTest {
public static void main(String[] args) {
InnerClassTest outer=new InnerClassTest();
outer.test();
}
int outVal=100;
void test(){
Inner in= new Inner();
in.display(78);
}
class Inner{
int outVal=50;
void display(int outVal){
System.out.println("参数中的值是:"+outVal);
System.out.println("内部类的值是:"+this.outVal);
System.out.println("外部类的值是:"+InnerClassTest.this.outVal);
}
}
}
原理:在内部类对象保存了一个对外部类对象的引用。
使用final的原因
是变量的作用域的问题,因为匿名内部类是出现在一个方法的内部的,如果它要访问这个方法的参数或者方法中定义的变量,则这些参数和变量必须被修饰为final。因为虽然匿名内部类在方法的内部,但实际编译的时候,内部类编译成Outer.Inner,这说明内部类所处的位置和外部类中的方法处在同一个等级上,外部类中的方法中的变量或参数只是方法的局部变量,这些变量或参数的作用域只在这个方法内部有效。因为编译的时候内部类和方法在同一级别上,所以方法中的变量或参数只有为final,内部类才可以引用。
- java 内部类(内置类,嵌套类)
- JAVA内部类(内置类,嵌套类)
- 内部类、内置类、嵌套类
- java嵌套类(static内部类)
- java内部类(三,嵌套类)
- Java嵌套类(内部类)总结
- Java嵌套类(内部类)
- java中的内部类(嵌套类)
- 内部类(嵌套类、内置类)访问规则、定义原则、静态内部类、匿名内部类
- java 内部类、匿名内部类、嵌套类的使用
- Java中的嵌套类、内部类、静态内部类
- Java中的嵌套类、内部类、静态内部类
- Java中的嵌套类、内部类、静态内部类
- Java中的嵌套类、内部类、静态内部类
- 【Java】java嵌套类及内部类
- java内部类,内部类的共性,成员内部类,方法内部类匿名内部类,静态嵌套类,不解
- java内部类嵌套类、成员类、
- java静态内部类(嵌套类)
- 不要期待老板主动为你改变什么...
- Move Type
- 用html构造来代替Gridview
- 安装时提示 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 解决办法
- 急需要一个***@neusoft.net的邮箱,怎么注册,或者有的话暂时借我用下(临时用) 谁能帮个忙,分都给你
- java 内部类(内置类,嵌套类)
- android Activity各种状态详解
- jquery 实现仿QQ右下角弹出框
- moto driver installer 程序的log
- SQLite的查询优化
- 关于C/C++字符串操作
- Jaxb2 转换XML文档
- 关于C/C++预处理
- 如何更改水晶报表导出文件的名称