151 01 Android 零基础入门 02 Java面向对象 07 Java多态 06 内部类 02 成员内部类

151 01 Android 零基础入门 02 Java面向对象 07 Java多态 06 内部类 02 成员内部类

**本文知识点:成员内部类 **

说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间充裕了,会对目前的博客编辑修改,补充上详细的文字说明);有些步骤和相关知识点缺乏文字描述,可能会难以理解。读者如有不明之处,欢迎博客私信或者微信(本人微信在博客下方的“关于博主”处)与本人交流,共同进步

成员内部类

成员内部类定义及简单代码示例

mark

获取成员内部类实例对象

示例——外部类内部类代码基本结构
mark

获取成员内部类实例对象方式1
mark

方式1 :测试内部类中的方法
mark
mark

获取成员内部类实例对象方式2及内部类中的方法测试结果
mark

获取成员内部类实例对象方式3:借助外部类中获取内部类实例信息的方法(本例中该方法是getHeart)
实际上方式3也是一种编码习惯,在外部类中通常也会写一个获取内部类的方法。
如同本例中在外部类Person中存在内部类Heart,就会在外部类Person写一个获取内部类Heart的getHeart方法——以便于内部类对象的实例化操作。
mark

方式3测试结果
mark

小结:
mark

内部类访问修饰符

内部类的访问修饰符:public、protected、private、默认不写 这四种都可以
但这四种修饰符也会因为访问修饰权限的不同,影响内部类实际使用时的操作能力。
mark

内部类和外部类成员之间的相互使用情况

内部类可以直接调用外部类的属性和方法
mark
测试时3种方式都可以正常调用,但为什么会出现2种不同的输出结果?
mark

方式2、3 可以正常获取测试类中设置的12岁年龄
mark
方式1使用的是内部类定义属性时的属性默认值
mark
这个方式1中的0岁如何来的呢?
因为通过new关键字,新产生了一个Person对象,但是Person对象并没有对age属性进行赋值的操作。所以age属性使用了默认值0。
mark

如果内部类中定义了和外部类中同名的变量时,访问时访问哪一个呢?
mark
3种方式的测试结果都是内部类中的age=13,即优先访问内部类中的变量
mark

如果在内部类中想要访问外部类中的变量,该如何做?
格式:

外部类名.this.变量名
mark

测试一下,又恢复了之前访问外部类属性age的输出结果
mark

内部类的编译结果

mark

外部类中使用内部类信息

外部类中如果想要使用内部类的成员,必须通过内部类的实例才能获取到
mark

如果脱离内部类实例,就无法访问内部类的成员
mark
mark

成员内部类小结

mark

原文地址:https://www.cnblogs.com/xlfcjx/p/13828293.html