151 Android 零基础入门 02 Java面向对象 07 Java多态 06 内部类 02 成员内部类
**本文知识点:成员内部类 **
说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间充裕了,会对目前的博客编辑修改,补充上详细的文字说明);有些步骤和相关知识点缺乏文字描述,可能会难以理解。读者如有不明之处,欢迎博客私信或者微信(本人微信在博客下方的“关于博主”处)与本人交流,共同进步。
成员内部类
成员内部类定义及简单代码示例
获取成员内部类实例对象
示例——外部类内部类代码基本结构
获取成员内部类实例对象方式1:
方式1 :测试内部类中的方法
获取成员内部类实例对象方式2及内部类中的方法测试结果:
获取成员内部类实例对象方式3:借助外部类中获取内部类实例信息的方法(本例中该方法是getHeart):
实际上方式3也是一种编码习惯,在外部类中通常也会写一个获取内部类的方法。
如同本例中在外部类Person中存在内部类Heart,就会在外部类Person写一个获取内部类Heart的getHeart方法——以便于内部类对象的实例化操作。
方式3测试结果
小结:
内部类访问修饰符
内部类的访问修饰符:public、protected、private、默认不写 这四种都可以
但这四种修饰符也会因为访问修饰权限的不同,影响内部类实际使用时的操作能力。
内部类和外部类成员之间的相互使用情况
内部类可以直接调用外部类的属性和方法
测试时3种方式都可以正常调用,但为什么会出现2种不同的输出结果?
方式2、3 可以正常获取测试类中设置的12岁年龄
方式1使用的是内部类定义属性时的属性默认值
这个方式1中的0岁如何来的呢?
因为通过new关键字,新产生了一个Person对象,但是Person对象并没有对age属性进行赋值的操作。所以age属性使用了默认值0。
如果内部类中定义了和外部类中同名的变量时,访问时访问哪一个呢?
3种方式的测试结果都是内部类中的age=13,即优先访问内部类中的变量
如果在内部类中想要访问外部类中的变量,该如何做?
格式:
外部类名.this.变量名
测试一下,又恢复了之前访问外部类属性age的输出结果
内部类的编译结果
外部类中使用内部类信息
外部类中如果想要使用内部类的成员,必须通过内部类的实例才能获取到
如果脱离内部类实例,就无法访问内部类的成员