java 内部类,静态内部类

由于写到oss上传,其中进度条事例内部出现静态内部类,于是,再重新学习一下静态内部类:

内部类(Inner Class)和静态内部类(Static Nested Class)的区别
定义在一个类内部的类叫内部类,包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制,可以声明 为abstract的供其他内部类或外部类继承与扩展,或者声明为static、final的,也可以实现特定的接口。外部类按常规的类访问方式使用内部 类,唯一的差别是外部类可以访问内部类的所有方法与属性,包括私有方法与属性

(1)创建实例

   OutClass.InnerClass obj = outClassInstance.new InnerClass(); //注意是外部类实例.new,内部类

 静态如上截图代码事例,获取内部类方法如下:

GetProgressSample.PutObjectProgressListener in = new  GetProgressSample.PutObjectProgressListener();  //即可访问内部类

(2)外部类访问内部类

   访问内部类对象时总是需要一个创建好的外部类对象。内部类对象通过‘外部类名.this.xxx’的形式访问外部类的属性与方法

(3)静态内部类

   定义静态内部类:在定义内部类的时候,可以在其前面加上一个权限修饰符static。此时这个内部类就变为了静态内部类。

通常称为嵌套类,当内部类是static时,意味着:

   [1]要创建嵌套类的对象,并不需要其外围类的对象;

   [2]不能从嵌套类的对象中访问非静态的外围类对象(不能够从静态内部类的对象中访问外部类的非静态成员);

猜你喜欢

转载自blog.csdn.net/qq_40562912/article/details/84286278