首页 > 代码库 > java内部类
java内部类
#1,成员内部类
public class TestInnerClass { private int id; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } /** * @param args * @author wangbiao * @Java内部类的使用 */ public static void main(String[] args) { //编译这个java文件,会产生两个class文件,TestInnerClass.class和TestInnerClass$Inner.class //能够访问成员内部类必须经过外部类对象 TestInnerClass outer = new TestInnerClass(); Inner inner = outer.new Inner(); inner.setName("inner"); outer.setName("outer"); outer.setId(1234567890); inner.work(); } void test(){//外部类非静态方法访问成员内部类 Inner inner = new Inner(); inner.work(); } class Inner{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } //不可申明static类型的变量,else 编译报错 void work(){ System.out.println(id); System.out.println(name);//优先内部类属性 System.out.println(this.name);//内部类对象 System.out.println(TestInnerClass.this.name);//外部类对象 } } }
#2,方法内部类
//方法里面的内部类 void _test(String name){ //方法内部类,只能在定义改内部类的方法里面实例化该内部类 //方法内部类不能访问方法里面非final的变量,原因是存活期不同,方法里面的变量保存在栈中,而内部类对象是保存在堆中 //方法执行完后,保存在栈中的非final局部变量就会被删除,但是内部类对象可能仍然在堆中。 //方法里的内部类更像是局部变量,只能用final 和 abstact修饰 final int a = 10; class Inner_Second{ void test(){ System.out.println(a); } } } static void test_one(){ //只能访问外部类的静态变量 final int a = 10; class Inner_Second{ void test(){ System.out.println(VERSION+"-"+a); } } }
#3,静态内部类
//静态内部类相当于外部类之外的其他类,不能访问外部类的成员和方法。 TestInnerClass.Static_Inner static_Inner = new TestInnerClass.Static_Inner();
#4,匿名内部类
继承式+接口式+参数式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。