内部类概述
来源:互联网 发布:卧蚕阿姨淘宝店 编辑:程序博客网 时间:2024/06/06 16:43
对于每个内部类来说:Java编译器会生成独立.class文件
成员内部类:外部类名$内部类名字
局部内部类:外部类名$数字内部类名称
匿名内部类:外部类名$数字
内部类根据使用不同的修饰符或者定位的位置不同,分成四类
四种内部类
1.实例内部类:内部类没有使用static类
2静态内部类:内部类使用了static修饰
3局部内部类:在方法中定义的内部类
4匿名内部类适用于仅适用一次使用的类,属于局部内部类的特殊情况
外部类的访问修饰符,要么使用public,要么就缺省
内部类看做是外部类的一个成员,好比字段,那么内部类可以使用public/缺省/protected/private修饰,还可以是static修饰
实例内部类
没有使用static修饰内部类,说明内部类属于外部类的对象,不属于外部类本身
特点:
创建实例内部类前,必须存在外部类对象,通过外部类对象创建内部类对象(当存在内部类对象是,一定存在外部类对象)
实例内部类的实例自动持有外部类的实例的引用 内部类可以直接访问外部类成员
外部类中不能直接访问内部类的成员,必须通过内部类的实例去访问
实例内部类中不能定义静态成员,只能定义实例成员
如果实例内部类和外部类存在同名的字段或方法abc,那么在内部类中,this.abc表示访问内部类成员,外部类this.abc表示访问外部类成员
package com.swing;import java.awt.Color;import java.awt.Container;import javax.swing.JFrame;import com.swing.Outter.Inner;class Outter{String name="Outter.name";public void getAge(){//System.out.println(age);外部类中不能直接访问内部类的成员System.out.println(this.new Inner().age);}class Inner{// 实例内部类中不能定义静态成员,只能定义实例成员//static int width;//static int getHeight()//{////}String name="Inner.name";int age =17;public void getName(){System.out.println(name);//Inner.name 隐藏System.out.println(this.name);//Inner.name 隐藏System.out.println(Outter.this.name);//Outter.name}}}public class Example10_1 {public static void main(String[] args) {Outter out = new Outter();//创建实例内部类前,必须存在外部类对象,通过外部类对象创建内部类对象Outter.Inner in=out.new Inner();//内部类可以直接访问外部类成员in.getName();//外部类方法要访问内部成员的字段 out.getAge();}}
静态内部类:
使用static修饰的内部类
特点:
1):静态内部类的实例不会自动持有外部类的特定实例的引用,在创建内部类的实例时,不必创建外部类的实例
2):静态内部类可以直接访问外部类的静态成员,如果访问外部类的实例成员,必须通过外部类的实例去访问。
3)在静态内部类中可以定义静态成员和实例成员
3)测试类可以通过完整的类名直接访问静态内部类的静态成员
package com.swing;import java.awt.Color;import java.awt.Container;import javax.swing.JFrame;import com.swing.Outter.Inner;class Outter{String name="Outter.name";static class Inner{static int age=17;String name="Inner.name";public void test(){System.out.println(name);System.out.println(new Outter().name);}}}public class Example10_1 {public static void main(String[] args) {Inner in = new Inner();in.test();}}
- 内部类概述
- Java内部类概述
- 内部类概述
- java 内部类概述
- 内部类----概述
- 匿名内部类----概述
- 内部类概述
- Java内部类使用概述
- 内部类概述和讲解
- 简单的内部类概述
- Java内部类的概述
- Java 匿名内部类 概述
- 黑马程序员_内部类概述
- 黑马程序员_内部类概述
- 内部类的概述和讲解
- JAVA面向对象-----内部类的概述
- 内部类概述和访问特点
- Java面向对象,内部类概述
- Android 源码编译错误:/usr/bin/ld: cannot find -lz
- 线程数究竟设多少合理
- Spring Cloud分布式微服务云架构
- Android中SeekBar的调整
- IOS pod最新的安装和使用方法
- 内部类概述
- 903CBoxes Packing
- KafKa的配置文件
- 图像显示—关于matplotlib.pyplot.imshow()函数
- Java 简单拼图游戏(实现音乐播放功能)
- 笔记
- php api接口开发
- 登录模块的处理
- Opencv2.4.9源码分析——Stitching(一)