博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android常见的三种内部类
阅读量:7105 次
发布时间:2019-06-28

本文共 1394 字,大约阅读时间需要 4 分钟。

在java里类中再定义类,这种在其他类内部类叫做内部类,在Android开发里最常见有三种内部类分别是(成员内部类、方法内部类、匿名内部类)

一、成员内部类

1 public class Test {2     //不对外开放的 3 class memberInnerClass{ 4 public void memberInner(){ 5 System.out.println("成员内部类"); 6 } 7 } 8 }

编译一下,我们看到目录中出现了两个class文件在我们的工作目录里,可以看到多出一个Test$memberInClass.class的文件,这是就是内部类编译后的class文件

成员内部类的特点:
  1. 内部类就像一个实例成员一样存在于外部类中。
  2. 内部类可以访问外部类的所有成员就想访问自己的成员一样没有限制。
  3. 内部类中的this指的是内部类的实例对象本身,如果要用外部类的实例对象就可以用类名.this的方式获得。
  4. 内部类对象中不能有静态成员,原因很简单,内部类的实例对象是外部类实例对象的一个成员。

二、方法内部类

1 public class A {2 3 public void A(){ 4 System.out.println("方法内部类"); 5 } 6 7 }
1 public class Test { 2     3 public void methodInner(){ 4 //短暂性的 5 class B extends A{ 6 7 } 8 new B().A(); 9 } 10 }

方法内部类特点:

  1.  方法中的内部类没有访问修饰符, 即方法内部类对包围它的方法之外的任何东西都不可见。
  2.  方法内部类只能够访问该方法中的局部变量,所以也叫局部内部类。而且这些局部变量一定要是final修饰的常量。

三、匿名内部类(在Android里最常见的一种)

当我们把内部类的定义和声明写到一起时,就不用给这个类起个类名而是直接使用了,这种形式的内部类根本就没有类名,因此我们叫它匿名内部类

1 public abstract class A implements B{ 2 3 public void A(){ 4 System.out.println("A"); 5 } 6 7 }
1 public interface B{2     3 public void B(); 4 5 }
1 public class Test { 2 3 public static void main(String[] args) { 4 //new出接口或者实现类 5 A a= new A (){ 6 //实现接口里未实现的方法 7 public void B() { 8 System.out.println("匿名内部类"); 9 } 10 }; 11 a.A(); 12 a.B(); 13 }
匿名内部类的特点:
  1. 一个类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的事先或是覆盖。
  2. 只是为了获得一个对象实例,不需要知道其实际类型。
  3. 类名没有意义,也就是不需要使用到。
    本文转自 一点点征服   博客园博客,原文链接:http://www.cnblogs.com/ldq2016/p/6691260.html
,如需转载请自行联系原作者
你可能感兴趣的文章
ajax加载进去的内容绑定事件不生效
查看>>
好用的vue组件
查看>>
Ubuntu下搭建postgresql主从服务器(方法2)
查看>>
postgresql创建只读账号
查看>>
ubuntu apache2 端口的改变
查看>>
我的友情链接
查看>>
mysql master slave
查看>>
NS_ERROR_XPC_NOT_ENOUGH_ARGS: Not enough arguments [nsIDOMWindow.alert]
查看>>
IT技术随笔博客园链接
查看>>
squid
查看>>
Aspose.Cells 8月新版17.8发布 | 附下载
查看>>
php连接mysql速度慢的问题解决
查看>>
2003服务器安全设
查看>>
对centos6下时间同步(ntp)操作的讨论
查看>>
概率论与数理统计(一)古典概型
查看>>
kafka学习:入门
查看>>
Object.assign()的用法
查看>>
什么是次世代游戏
查看>>
矢量图形引擎库VectorDraw Developer Framework 更新至v7.7011.0.4
查看>>
SSH 内网端口转发实战
查看>>