java静态内部类

本文详细介绍了Java中静态内部类的概念及使用方式。静态内部类不依赖于外部类的实例,只能访问外部类的静态成员,并且可以不通过外部类实例直接创建。文中还提供了具体的示例代码。
非静态内部类里面不能有静态成员:静态方法是不用生成实例就可以被访问,非静态内部类不被实例化就无法被访问,所以其内的静态成员也是无用的。

public class OuterClass {
...
static class StaticInnerClass1 { //内部静态类
//只可以访问OuterClass的静态成员
...
} //StaticInnerClass结束
...
static class StaticInnerClassN { //更多静态内部类
//只可以访问OuterClass的静态成员
...
} //StaticInnerClassN结束
} //OuterClass结束
与一般内部类不同,在静态代码中不能够使用this操作,所以在静态内部类中只可以访问外部类的静态变量和静态方法。使用静态内部类的目的和使用内部类相同。如果一个内部类不依赖于其外部类的实例变量,或与实例变量无关,则选择应用静态内部类。

如下例子演示怎样使用静态内部类:

///完整程序存在本书配套资源目录Ch12名为StaticInnerClassTest.java
public class StaticInnerClassTest {
public static void main( String args[] ) {
OuterClass2 outer = new OuterClass2();
OuterClass2.StaticInnerClass.innerMethod();
//调用静态内部类的静态方法
OuterClass2.outerMethod();
//创建静态内部类对象
OuterClass2.StaticInnerClass staticInner = new OuterClass2.StaticInnerClass();
int num = staticInner.innerMethod2(); //调用静态内部类实例方法
}
}
class OuterClass2 { //外部类
private double x = 0.0; //内部静态类不可以访问外部类实 例变量
static private int n = 10; //外部类静态变量
static void outerMethod() { //外部类静态方法
System.out.println("from OuterClass...");
}
void outerMethod2() {
System.out.println("from OuterClass’ instance method2()...");
}
static class StaticInnerClass { //静态内部类
static private int m = 5; //静态内部类静态变量
static void innerMethod() { //静态内部类静态方法
int sum;
n = 20; //只可以访问外部类静态变量
sum = n + m;
System.out.println("from InnerClass sum = " + sum);
outerMethod(); //只可以调用外部类静态方法
}
int innerMethod2() {
n = 100;
outerMethod();
System.out.println("from InnerMethod2() n = " + n);
return n;
}
} //静态内部类结束
} //外部类结束

如同不用创建对象就可调用静态方法一样,上例静态内部类中的静态方法利用:

OuterClass2.StaticInnerClass.innerMethod(); //静态内部类调用其静态方法

来调用。注意,可以在静态内部类的方法中,直接访问外部类的静态变量n和调用静态方法outerMethod()。但不允许访问外部类的实例变量x以及实例方法outerMethod2()。
静态内部类中也可以提供实例方法,如:

static class StaticInnerClass {
int innerMethod2() {
n = 100; //只可访问外部类静态变量
outerMethod(); //只可调用外部类静态方法
System.out.println("from InnerMethod2() n = " + n);
return n;
}
} //静态内部类结束

静态内部类的实例方法中亦只允许访问外部类的静态成员。
可以使用下列语法格式创建一个静态内部类对象并且调用其实例方法,以及静态方法:

OuterClass2.StaticInnerClass staticInner = new OuterClass2.StaticInner Class(); //创建静态内部类对象
int num = staticInner.innerMethod2(); //调用实例方法
staticInner.innerMethod(); //调用其静态方法
【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值