最后两句outerclass.innerclass in=out.doit()
outerclass.innerclass in2=out.new innerclass()
怎么理解?
内部类与外部类加个点是什么意思,又怎么理解=out.doit()和=out.new innerclass()
为什么写成这种形式?
老师您好 发表于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()方法里的。类的成员属性是不可以直接用在静态方法中的,两个内部类对象并不是同一个对象。
根号申 发表于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知识的有哪几章内容,重点又是哪些内容。