Java 静态内部类作用?

网上有关“Java 静态内部类作用?”话题很是火热,小编也是针对Java 静态内部类作用?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。

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

2、在某些特殊的情况下,少了这个静态内部类还真是不行。如在进行代码程序测试的时候,如果在每一个Java源文件中都设置一个主方法(主方法是某个应用程序的入口,必须具有),那么会出现很多额外的代码。

3、最主要的时这段主程序的代码对于Java文件来说,只是一个形式,其本身并不需要这种主方法。但是少了这个主方法又是万万不行的。在这种情况下,就可以将主方法写入到静态内部类中,从而不用为每个Java源文件都设置一个类似的主方法。

这对于代码测试是非常有用的。在一些中大型的应用程序开发中,则是一个常用的技术手段。

扩展资料

例如:

对于两个类,拥有相同的方法:

class People{

run();

}

interface Machine{

run();

}

此时有一个robot类:

class Robot extends People implement Machine.

此时run()不可直接实现。

interface Machine{

void run();

}

class Person{

void run(){

System.out.println("run");

}

}

class Robot extends Person{

private class MachineHeart implements Machine{

public void run(){

System.out.println("heart run");

}

}

public void run(){

System.out.println("Robot run");

}

Machine.getMachine(){returnnew MachineHeart();

}

class Test{

publicstaticvoid main(String[] args){

Robot robot=new Robot();

Machine m=robot.getMachine();

m.run();

robot.run();

}

}

百度百科-静态内部类

内部类

一、 定义:在一个类内部定义的类。

二、 类型:成员内部类、局部内部类(也叫方法内部类)、匿名内部类、静态嵌套类。

三、 用法

a) 四种内部类的共性

i. 内部类仍然是一个独立的类,在编译后内部类会被编译成独立的.class文件,只是在前面加上外部类的类名和$符号。

ii. 内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由访问外部类的成员变量,无论是否是private的。

iii. 内部类的this引用:内部类中同样使用this.成员变量,如要使用外部类的成员变量,则使用外部类名.this.成员变量。

b) 四种内部类的区别

i. 成员内部类:它相当于外部类的一个成员变量或方法,可用修饰符为final、abstract、public、private、protected、strictfp和static。形式如下

class Outer {

class Inner{}

}

编译上述代码会产生两个文件,Outer.class和Outer$Inner.class。成员内部类内不允许有任何静态声明!能够访问成员内部类的途径是通过外部类的对象或外部类中非静态的方法。

//外部类

class Outer {

//内部类

class Inner {

//内部类的方法

public void myInner() {

System.out.println(“Inner class”);

}

}

//非静态方法访问内部类

public void getInner() {

Inner in = new Inner();

in.myInner();

}

//外部访问内部类

pulblic static void main(String args[]) {

Outer out = new Outer();

Outer.Inner in = out.new Inner();

in.myInner();

}

}

ii. 局部内部类(方法内部类):在外部类的某个方法内定义的类,与成员内部类不同,它相当于外部类的一个局部变量,修饰符只有final和abstract。

1. 只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化。

2. 局部内部类对象不能使用该内部类所在方法的非final局部变量。因为方法的局部变量位于栈上,只存在于该方法的生命期内。当一个方法结束,其栈结构被删除,局部变量成为历史。但是该方法结束后,在方法内创建的内部类对象可能仍然存在于堆中!例如,如果对它的引用被传递到其他某些代码,并存储在一个成员变量内。正因为不能保证局部变量的存活期和方法内部类对象的一样长,所以内部类对象只能使用所在方法中被定义为final的局部变量。

3. 静态方法内的局部内部类没有this的引用。

a) 示例:

class Outer {

public void doSomething() {

final int a = 10;

class Inner {

public void myInner() {

System.out.println(a);

}

}

}

}

iii. 匿名内部类:没有名字的内部类。

1. 继承式的匿名内部类

class Car {

public void drive() {

System.out.println(“Driving a car!”);

}

}

class Temp {

public static void main(String[] args) {

Car car = new Car() {

pulbic void drive() {

System.out.println(“Driving another car!”);

}

};

car.drive();

}

}

2. 接口式的匿名内部类

interface Face {

public void drive();

}

class Temp {

public static void main(String[] args) {

Face face = new Face() {

public void drive() {

System.out.println();

}

};

face.drive();

}

}

3. 参数匿名内部类:顾名思义,将匿名内部类当成参数使用。

iv. 静态嵌套类:从技术上讲,静态嵌套类不属于内部类。因为内部类与外部类共享一种特殊关系,更确切地说是对实例的共享关系。而静态嵌套类则没有上述关系。它只是位置在另一个类的内部。因此也被称为顶级嵌套类。静态的含义是该内部类可以像其他静态成员一样,没有外部类对象时,也能够访问它。静态嵌套类不能访问外部类的成员和方法。

class Outer {

static class Inner{}

}

class Temp {

public static void main(String[] args) {

Outer.Inner n = new Outer.Inner();

}

}

关于“Java 静态内部类作用?”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!

本文来自作者[昝瑞云]投稿,不代表同舟号立场,如若转载,请注明出处:https://www.sdtzcl.com/tz/302.html

(6)

文章推荐

  • 岸的部首和组词

    网上有关“岸的部首和组词”话题很是火热,小编也是针对岸的部首和组词寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。岸的部首是:山。组词有:护岸、海岸线、伟岸、岸边、夹岸、行岸、两岸、傲岸、波罗岸、岸线、引岸、海岸、岸限、上岸、骜岸、偏岸、魁岸、棱岸。护岸?:

    2025年10月02日
    4
  • 丽江三大古镇分别都有哪些

    网上有关“丽江三大古镇分别都有哪些”话题很是火热,小编也是针对丽江三大古镇分别都有哪些寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。丽江三大古镇是大研古镇,束河古镇,白沙古镇。1,白沙古镇白沙古镇位于丽江城北约10公里,北临玉龙雪山,南至龙泉,西依芝山,是纳

    2025年10月03日
    4
  • 双一流浙工大无望?

    网上有关“双一流浙工大无望?”话题很是火热,小编也是针对双一流浙工大无望?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。浙江工业大学是教育部与浙江省政府共建的首批重点高校,是我国的双非高校。由于第二批双一流名单即将公布,因此网上也有很多关于浙江工业大学的消

    2025年10月03日
    5
  • 西藏大学研究生有哪些专业

    网上有关“西藏大学研究生有哪些专业”话题很是火热,小编也是针对西藏大学研究生有哪些专业寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。院校专业:西藏职业技术学院是2005年7月经自治区人民政府批准,在原西藏自治区农牧学校和西藏自治区综合中专学校的基础上合并组

    2025年10月03日
    3
  • NBA历史三分球谁最厉害

    网上有关“NBA历史三分球谁最厉害”话题很是火热,小编也是针对NBA历史三分球谁最厉害寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。NBA历史三分球最厉害的是雷·阿伦。三分、篮下突破、急停跳投无一不精,年轻时偶尔飙到篮下爆扣,但突破后依靠出其不意的起跳和闪电

    2025年10月04日
    3
  • 百合花种植过程应该如何施肥?

    网上有关“百合花种植过程应该如何施肥?”话题很是火热,小编也是针对百合花种植过程应该如何施肥?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。百合花种植过程应该如何施肥?需要注意什么?百合是人们喜爱的花朵之一,因其香气迷人,花朵寓意好,很多人也选择在家中种植百

    2025年10月04日
    5
  • 特斯拉汽车质量真的存在问题吗?

    网上有关“特斯拉汽车质量真的存在问题吗?”话题很是火热,小编也是针对特斯拉汽车质量真的存在问题吗?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。无法单凭这一情况来确定特斯拉汽车质量是否存在问题。汽车在行驶过程中受到各种外力的作用,例如路上的石子、树枝等等,这

    2025年10月04日
    2
  • 天蝎座女生和男生结婚后的心理变化

    网上有关“天蝎座女生和男生结婚后的心理变化”话题很是火热,小编也是针对天蝎座女生和男生结婚后的心理变化寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。天蝎座女生和男生结婚后的心理变化天蝎座女生和男生结婚后的心理变化,星

    2025年10月05日
    0
  • 吉利博瑞ge钥匙远程启动怎么操作

    网上有关“吉利博瑞ge钥匙远程启动怎么操作”话题很是火热,小编也是针对吉利博瑞ge钥匙远程启动怎么操作寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。记得小时候起,我就对汽车就有一种独特的喜爱。当时,五六岁的时候在家门口马路上见到一辆汽车驶过,会兴奋的追上去一

    2025年10月06日
    2
  • 张郃后期为何能成为无敌的存在?

    网上有关“张郃后期为何能成为无敌的存在?”话题很是火热,小编也是针对张郃后期为何能成为无敌的存在?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。在汉末三分时代,有个人非常值得我们敬佩。他有才能,也有理想,他奋斗过也隐忍过,懦弱过也勇敢过,面对过也逃避过,失败

    2025年10月06日
    2

发表回复

本站作者后才能评论

评论列表(4条)

  • 昝瑞云
    昝瑞云 2025年10月03日

    我是同舟号的签约作者“昝瑞云”!

  • 昝瑞云
    昝瑞云 2025年10月03日

    希望本篇文章《Java 静态内部类作用?》能对你有所帮助!

  • 昝瑞云
    昝瑞云 2025年10月03日

    本站[同舟号]内容主要涵盖:生活百科,小常识,生活小窍门,知识分享

  • 昝瑞云
    昝瑞云 2025年10月03日

    本文概览:网上有关“Java 静态内部类作用?”话题很是火热,小编也是针对Java 静态内部类作用?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您...

    联系我们

    邮件:同舟号@sina.com

    工作时间:周一至周五,9:30-18:30,节假日休息

    关注我们