java中关于内部类的使用详解
JAVA 使用 详解 关于 内部
2023-06-13 09:14:51 时间
内部类访问规则
•内部类可以直接访问外部类中的成员,包括私有。访问格式:外部类名.this
•外部类要访问内部类必须创建内部类对象。
•内部类在成员位置上,可以被成员修饰符修饰。
publicclassInnerClassDemo1{
publicstaticvoidmain(String[]args){
Outerou=newOuter();
ou.method();//4 3
Outer.Inneroi=newOuter().newInner();
oi.function2();
}
}
classOuter{
privateintx=3;
classInner{
intx=4;
voidfunction1(){
System.out.println(x);
System.out.println(Outer.this.x);
}
voidfunction2(){
Outer.this.method();
}
}
publicvoidmethod(){
Innerin=newInner();
in.function1();
}
}
静态内部类
•内部类定义了静态成员,内部类必须是静态的。
/*
注意:内部类定义了静态成员,内部类必须是静态的。
*/
classInnerClassDemo2
{
publicstaticvoidmain(String[]args)
{
newOuter.Inner().function();//创建静态内部类对象
}
}
classOuter
{
privatestaticintx=5;
staticclassInner//静态内部类只能访问外部类的静态成员
{
voidfunction()
{
System.out.println("inner:"+x);
}
}
}
局部内部类
•内部类定义在局部时,可以直接访问外部类中的成员。
•访问局部变量必须被final修饰。
/*
内部类定义在局部时:可以直接访问外部类中的成员,因为还持有外类中的引用。
但是不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量
*/
class InnerClassDemo3
{
publicstaticvoidmain(String[]args)
{
Outerout=newOuter();
out.method(7);
}
}
classOuter
{
intx=3;
publicvoidmethod(finalinta)
{
classInner
{
voidfunction()
{
System.out.println(a);
}
}
newInner().function();
}
}
匿名内部类
•匿名内部类是内部类的简写格式。
•匿名内部类的前提:内部类必须继承一个类或者实现接口。
•匿名内部类不能创建构造函数。
/*
匿名内部类
1.匿名内部类其实就是内部类的简写格式
2.定义匿名内部列的前提。
内部类必须是继承一个类或者实现接口
3.匿名内部类的格式:new父类或者接口(){定义子类内容}
*/
classInnerClassDemo4
{
publicstaticvoidmain(String[]args)
{
Demod=newDemo()
{
voidshow()
{
System.out.println("匿名内部类show方法");
}
voidmethod()
{
System.out.println("匿名内部类method方法");
}
}.show();
d.method();
}
}
abstractclassDemo
{
abstractvoidshow();
}
相关文章
- 实战:第十篇:使用Java代码获取Linux系统执行命令后的结果
- java运行环境配置(jdk配置)Java博客 2 年前 桃李Taoli
- calendar java_java中Calendar类的使用讲解
- 使用IDEA自带maven建java项目时报错。详解程序员
- 在Java使用Redis详解大数据
- Java中的定时器Timer使用示例代码详解编程语言
- Java 使用 NIO 方式读文件详解编程语言
- java 使用POI批量导入excel数据详解编程语言
- Java经典实例:使用正则表达式:测试模式详解编程语言
- Oracle 视图 DBA_JAVA_METHODS 官方解释,作用,如何使用详细说明
- Java线程池的分析和使用详解编程语言
- Java-使用js进行编码,后台解码。详解编程语言
- 失效使用Java操作Redis实现过期失效(redisjava过期)
- 时间设置使用Java在Redis中配置过期时间(redisjava过期)
- 处理Java中使用Redis实现高效的过期处理(redisjava过期)
- 实战探索:Java中使用Redis缓存(java的redis案例)
- 使用Java轻松读取Redis数据 – 一步一步指南!(java读取redis)
- Linux下快速配置Java环境变量(linux设置java环境变量)
- Java解答Oracle使用更轻松的实现方式(oracle写成java)
- Oracle全面支持Java链技术构建数据库应用(java链oracle)
- Java中的static静态代码块的使用详解
- java关键字final使用方法详解
- java多线程并发中使用Lockers类将多线程共享资源锁定