已有101人关注
成员内部类
发表在Java图书答疑 2017-09-18 《Java从入门到精通(第4版)》第11章 类的高级特性
是否精华
版块置顶:

最后两句outerclass.innerclass in=out.doit()

        outerclass.innerclass in2=out.new innerclass()

怎么理解?

内部类与外部类加个点是什么意思,又怎么理解=out.doit()和=out.new innerclass()

为什么写成这种形式?

分享到:
精彩评论 7
根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2017-09-18
沙发

你可以这样理解:主体.主体的一部分

点左边表示将要调用的类,点右边表示调用的是这个类的一部分,如果是“类.类”,那么右边的类就应该是左边类的内部类。这和“类.属性”、“类.方法()”的原理一样。out.doit()返回的是内部类对象,所以就应该用内部类来声明变量类型。out.new innerclass()是在外部类中创建内部类对象的语法格式。

老师您好
学分:825 LV7
2017-09-18
板凳

outerclass.innerclass in=out.doit()中out不是外部类对象doit()不是外部类方法吗,哪来应该用内部类来声明变量类型的

还有第一句innerclass in=new innerclass()不也是创建内部类对象吗,与最后一句out.new innerclass()创建对象不是重复了吗。

根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2017-09-19
地板

老师您好 发表于2017-09-18 23:07

outerclass.innerclass in=out.doit()中out不是外部类对象doit()不是外部类方法吗,哪来应该用内部类来声明变量类型的

还有第一句innerclass in=new innerclass()不也是创建内部类对象吗,与最后一句out.new innerclass()创建对象不是重复了吗。

1.第一个问题:

Outerclass out;// 这是声明外部类类型

Outerclass.innerclass in;// 这是声明内部类类型

    创建变量时,写在变量名左边的就是声明类型,指创建的变量属于哪种类型,好让java虚拟机知道如何为此变量分配内存空间。

    外部类对象调用的doit()方法,返回类型是内部类innerClass。等号两边的类型必须是相同类型或兼容类型,否则不能赋值。


2.第二个问题。

    代码中第一句创建内部类对象是在OuterClass类体中写的,但out.new innerclass()这行代码是写在main()方法里的。类的成员属性是不可以直接用在静态方法中的,两个内部类对象并不是同一个对象。


老师您好
学分:825 LV7
2017-09-19
4L

根号申 发表于2017-09-19 08:35

1.第一个问题:

Outerclass out;// 这是声明外部类类型

Outerclass.innerclass in;// 这是声明内部类类型

    创建变量时,写在变量名左边的就是声明类型,指创建的变量属于哪种类型,好让java虚拟机知道如何为此变量分配内存空间。

    外部类对象调用的doit()方法,返回类型是内部类innerClass。等号两边的类型必须是相同类型或兼容类型,否则不能赋值。


2.第二个问题。

    代码中第一句创建内部类对象是在OuterClass类体中写的,但out.new innerclass()这行代码是写在main()方法里的。类的成员属性是不可以直接用在静态方法中的,两个内部类对象并不是同一个对象。


非常感谢老师热心为我解答问题,实话告诉老师我学java是为了学android,不知道老师能不能告诉我《java从入门到精通》第4版和《零基础学java》涉及到android知识的有哪几章内容,重点又是哪些内容。

根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2017-09-20
5L

老师您好 发表于2017-09-19 22:10

非常感谢老师热心为我解答问题,实话告诉老师我学java是为了学android,不知道老师能不能告诉我《java从入门到精通》第4版和《零基础学java》涉及到android知识的有哪几章内容,重点又是哪些内容。

这两本书都不涉及安卓知识,开发安卓程序掌握Java的基础就可以了。要学会基本语法、面向对象、异常处理、集合类和线程。

luo123456123cheng
学分:1960 LV9
2017-09-21
6L

你的这个问题老师的网站的视频上讲的很清楚,估计你没有看过视频的讲解。

老师您好
学分:825 LV7
2017-09-27
7L

luo123456123cheng 发表于2017-09-21 16:27

你的这个问题老师的网站的视频上讲的很清楚,估计你没有看过视频的讲解。

大佬,不好意思,由于很少用电脑,没有看到你的留言,请原谅我没能及时回复你。我在这里向你道歉,不知道你能不能告诉我学习android需要掌握哪些java知识点,老师虽然说了,但不具体。你说老师视频里讲得很清楚,但我真的不知道视频在哪里。求大佬指点一下,帮个忙好吗。

首页上一页 1 下一页尾页 7 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照