大鹏一日同风起,扶摇直上九万里。这篇文章主要讲述Android常见的三种内部类相关的知识,希望能为你提供帮助。
在java里类中再定义类,这种在其他类内部类叫做内部类,在android开发里最常见有三种内部类分别是(成员内部类、方法内部类、匿名内部类)
一、成员内部类
文章图片
1 public class Test { 2//不对外开放的 3class memberInnerClass{ 4public void memberInner(){ 5System.out.println("成员内部类"); 6} 7} 8 }
文章图片
编译一下,我们看到目录中出现了两个class文件在我们的工作目录里,可以看到多出一个Test$memberInClass.class的文件,这是就是内部类编译后的class文件
文章图片
成员内部类的特点:
- 内部类就像一个实例成员一样存在于外部类中。
- 内部类可以访问外部类的所有成员就想访问自己的成员一样没有限制。
- 内部类中的this指的是内部类的实例对象本身,如果要用外部类的实例对象就可以用类名.this的方式获得。
- 内部类对象中不能有静态成员,原因很简单,内部类的实例对象是外部类实例对象的一个成员。
文章图片
1 public class A { 2 3public void A(){ 4System.out.println("方法内部类"); 5} 6 7 }
文章图片
文章图片
1 public class Test { 2 3public void methodInner(){ 4//短暂性的 5class B extends A{ 6 7} 8new B().A(); 9} 10 }
文章图片
方法内部类特点:
- 方法中的内部类没有访问修饰符, 即方法内部类对包围它的方法之外的任何东西都不可见。
- 方法内部类只能够访问该方法中的局部变量,所以也叫局部内部类。而且这些局部变量一定要是final修饰的常量。
【Android常见的三种内部类】当我们把内部类的定义和声明写到一起时,就不用给这个类起个类名而是直接使用了,这种形式的内部类根本就没有类名,因此我们叫它匿名内部类
文章图片
1 public abstract class A implements B{ 2 3public void A(){ 4System.out.println("A"); 5} 6 7 }
文章图片
1 public interface B{ 2 3public void B(); 4 5 }
文章图片
1 public class Test { 2 3public static void main(String[] args) { 4//new出接口或者实现类 5A a= new A (){ 6//实现接口里未实现的方法 7public void B() { 8System.out.println("匿名内部类"); 9} 10}; 11a.A(); 12a.B(); 13 }
文章图片
匿名内部类的特点:
- 一个类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的事先或是覆盖。
- 只是为了获得一个对象实例,不需要知道其实际类型。
- 类名没有意义,也就是不需要使用到。
推荐阅读
- android计算器---思路以及计算器功能梳理(未完成)
- Android之网络摄像头
- [zhuan]Android 异常处理(java.lang.IllegalArgumentException(...contains a path separator))
- 用Kotlin开发Android的Hello Kotlin!!
- Android Notification和权限机制探讨
- 在 Python 中使用 Chatterbot 构建聊天机器人
- Python情感分析教程和高级指南
- Python数据类型转换教程详细指南
- 40 多个 Python 统计数据科学资源介绍