没有合适的资源?快使用搜索试试~ 我知道了~
Java内部类详解.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 121 浏览量
2021-10-02
11:46:13
上传
评论
收藏 26KB PDF 举报
温馨提示
试读
15页
Java内部类详解.pdf
资源推荐
资源详情
资源评论
一、内部类详解
1、定义
一个类的定义放在另一个类的内部,这个类就叫做内部类。
Java 代码
1. public class First {
2. public class Contents{
3. public void f(){
4. System.out.println("In Class First's inner Class Contents method f()
");
5. }
6. }
7. }
像这样的, Contents 就叫做内部类
内部类了解外围类,并能与之通信 ( 后面详细讲 )
2、链接到外围类
创建了内部类对象时, 它会与创造它的外围对象有了某种联系, 于是能访问外围类的所有
成员,不需任何特殊条件。
Java 代码
1. public class First {
2. public class Contents{
3. public void getStr(){
4. System.out.println("First.str="+str);
5. }
6. }
7. private String str;
8. }
9.
在内部类 Contents 中,可以使用外围类 First 的字段 str 。
那么,它是如何实现的呢?
是这样的, 用外围类创建内部类对象时, 此内部类对象会秘密的捕获一个指向外围类的引
用,于是,可以通过这个引用来访问外围类的成员。
通常,这些都是编译器来处理,我们看不到,也不用关心这个。
正是因为如此,我们创建内部类对象时,必须与外围类对象相关联。
注:嵌套类 ( 后面会讲到 ) 除外。
3、使用关键字 .this 与.new
内部类中得到当前外围类对象的引用,可以使用 .this 关键字,注意与 new 的区别
Java 代码
1. private int num ;
2. public Test2(){
3.
4. }
5.
6. public Test2(int num){
7. this.num = num;
8. }
9.
10. private class Inner{
11. public Test2 getTest2(){
12. return Test2.this;
13. }
14.
15. public Test2 newTest2(){
16. return new Test2();
17. }
18. }
19.
20. public static void main(String [] args){
21. Test2 test = new Test2(5);
22. Test2.Inner inner = test.new Inner();
23. Test2 test2 = inner.getTest2();
24. Test2 test3 = inner.newTest2();
25. System.out.println(test2.num);
26. System.out.println(test3.num);
27. }
28.
输出结果为 5 0
使用 .this 后,得到时创建该内部类时使用的外围类对象的引用, new 则是创建了一个新
的引用。
.new 关键字
如果想直接创建一个内部类对象,而不是通过外围类对象的方法来得到,可以使用 .new
关键字
形式是这样的:
Java 代码
1. OutClass.InnerClass obj = outClassInstance.new InnerClass();
必须是外围类对象 .new,而不能是外围类 .new
Java 代码
1. public class First {
2. public class Contents{
3. public void f(){
4. System.out.println("In Class First's inner Class Contents method
f()");
5. }
6. public void getStr(){
7. System.out.println("First.str="+str);
8. }
9. }
10.
11. public static void main(String [] args){
12. First first = new First();
13. First.Contents contents = first.new Contents();
14. contents.f();
15. }
16. }
17.
必须通过外围类 First 的对象 first 来创建一个内部类的对象
而且需要注意的是,在创建外围类对象之前,不可能创建内部类的对象 ( 嵌套类除外 ) 。
4、内部类与向上转型
将内部类向上转型为基类型,尤其是接口时,内部类就有了用武之地。
Java 代码
1. public interface Shape {
2. public void paint();
3. }
4. public class Painter {
5.
6. private class InnerShape implements Shape{
7. public void paint(){
8. System.out.println("painter paint() method");
9. }
10. }
11.
剩余14页未读,继续阅读
资源评论
资料大全
- 粉丝: 14
- 资源: 26万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功