这篇文章主要为大家展示了“Java内部类是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java内部类是什么”这篇文章吧。
1.定义:一个类内部又嵌套了一个类,被嵌套的类就是内部类(inner class),嵌套其他类的称为外部类(outer class)。内部类是类的五大成员之一(属性、 方法、构造器、代码块、内部类)。
分类:
说明:定义在成员位置中(方法或代码块外面),无static修饰。
1.可以直接访问外部类的所有的成员
2.可以 添加任意权限修饰符
3.作用域,和其他成员一样作用在整个外部类
package local_class; public class localclass {//外部类 //属性位置 private int n1=10; class localN1{//局部类 public void output(){ //==1==.可以直接访问外部类的所有的成员,包括私有 System.out.println("获取私有成员"+n1); } } //写一个方法来创建局部类的一个实列 public void output(){ localN1 LocalN1 = new localN1(); LocalN1.output(); } }
实现:
**说明:**定义在成员位置中(方法或代码块外面),有或无static修饰。
1.可以直接访问外部类的静态的成员,不能访问非静态成员。
2.可以 添加任意权限修饰符
3.作用域,和其他成员一样作用在整个外部类
代码:
package local_class; public class _static_localclass {//外部类 private int n1=10; static int n2=20; static public class localN2{//静态局部类 public void output(){ //==1==.可以直接访问外部类的所有的成员,包括私有 System.out.println("获取_static_localclass私有成员"+n2); //System.out.println(n1); } } //写一个方法来创建局部类的一个实列 public void output(){ localN2 LocalN2 = new localN2(); LocalN2.output(); } }
成员内部类:用法比较简单。
说明:局部类是定义在外部类的方法内或者代码块内。
1.可以直接访问外部类的所有的成员。
2.不能添加访问修饰符,局部内部类的地位就是一个局部变量(所以可以用fianl修饰)。
3.作用域:作用在所定义的方法中或者代码块中。
4.访问方式:局部内部类访问外部外部类成员可以直接访问。外部类访问局部内部类,在外部类作用域内先创建对象再访问。
5.外部其他类不能访问内部类。
6.外部类成员与内部类成员重名时,默认就近原则,如果想用外部类的话可以使用:外部类名.this.成员 。
例如:
错误代码
正确代码
package _inner_class; public class Named_local_inner_class {//外部类 private int a1=1; int a2=2; private void fun(){ System.out.println("输出了私有方法"); } //第一种情况,在方法中 //第二种情况,在代码块中(我就不打代码了和在方法中一样的) //此处以方法中为例。 public void output(){//方法 class inner_class{//局部内部类 //1.可以访问外部类的所有成员 public void _output(){ System.out.println("a1="+a1);//访问的私有成员 System.out.println("a2="+a2); fun(); } } //只需要实例化就行了,然后调用这个 output()方法。 //注意作用域 inner_class Inner_class=new inner_class(); Inner_class._output(); }//结束方法 }//外部类
调用
1.本质还是一个内部类 就是一个类,该类没有名字(其实有名字,只是我们看不见,系统分配)。
2.同时还是一个对象。 基本语法
new 类名或接口名(参数列表){
类体
};
调用匿名内部类:
输出
和有名的局部内部类的区分
1.A22对象只使用一次,以后不再使用时用匿名局部内部类。
2.A22的编译类型和运行类型是什么?(运行类型其实就是匿名局部内部类,就是XXXXX.外部类名$1)
如图:
以上是“Java内部类是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。