首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

静态部类

定义:静态部类,定义在类中,任何方法外,用static定义;静态部类只能访问外部类静态成员。...注意点: 一般情况下,如果一个内部类不是被定义成静态部类,那么在定义成员变量或者成员方法的时候,是不能够被定义成静态成员变量与静态成员方法的。也就是说,在非静态部类中不可以声明静态成员。...静态部类不能访问其外部类的非静态成员变量和方法。...在一个类中创建非静态成员内部类的时候,有一个强制性的规定,即内部类的实例一定要绑定在外部类的实例中,也就是在编译时期,编译器会给外部类江上一个字段就叫做 OuterClassName.this 而如果是静态部类...也就是要引用内部类首先得 new 出外部类。如果要在一个类中定义一个静态的内部类,不需要利用关键字new来创建外部类的实例。即在创建静态类内部对象时,不需要其外部类的对象存在。

65780
您找到你想要的搜索结果了吗?
是的
没有找到

JAVA静态部类_java静态部类实例化

//一些属性和方法 }   发现在许多实际应用的工程文件中,静态部类静态变量的使用很普遍。于是翻阅了一些书籍资料,深入学习了静态部类,在此做个总结。...如有不足、不当之处,欢迎拍砖指正~ 静态部类特性详解 ---- 静态部类的使用场景   在考虑使用静态部类时,一般有这样的场景需求:当外部类需要使用内部类,而内部类无需外部类资源,并且内部类可以单独创建...静态部类的使用限制   对于在外部类的各个方法间定义的内部类静态与非静态在使用时有不同的限制,主要总结为以下的几个区别:     (1)在方法间定义的非静态部类:       ● 外围类和内部类可互相访问自己的私有成员...● 非静态部类中不能定义静态成员变量与方法。     (2)在方法间定义的静态部类:       ● 只能访问外部类静态成员变量与方法。       ...● 在创建静态部类实例时不需要将静态部类的实例绑定在外部类的实例上。(即内部类可以单独创建实例) /** * 声明静态部类实例与非静态部类实例的区别示例。

1K10

java 内部类 静态部类_java外部类和内部类

今天我们分析内部类静态部类的区别,首先我们写一个InnerClassTest类,其中有一个内部类InnerClass和静态部类StaticInnerClass。...倒数5行,StaticInnerClass的innerMethod()报错,显示d() Q:什么是内部类?有什么作用?静态部类和非静态部类的区别? 总结 内部类就是定义在另外一个类里面的类。...它隐藏在外部类中,封装性更强,不允许除外部类外的其他类访问它;但它可直接访问外部类的成员。...静态部类和非静态部类的区别有: 静态部类是指被声明为static的内部类,可不依赖外部类实例化;而非静态部类需要通过生成外部类来间接生成。...静态部类只能访问外部类静态成员变量和静态方法,而非静态部类由于持有对外部类的引用,可以访问外部类的所用成员 参考: 从一道面试题开始说起 枚举、动态代理的原理 java内部类有什么好处?

69850

java内部类静态部类区别_静态部类对象的创建

在阅读Java Collection Framwork时,LinkedList中有个静态部类: private static class Node { E item...从之前的学习中,我们应该对静态这个关键字有一定的了解,静态代表它是属于类的,而不是属于实例的。我们可以通过类名直接对静态的玩意儿直接进行引用,但这里的Node静态部类却是私有的。...为了找到静态部类和普通内部类的区别,我使用jad工具,自己重写一个类似的Node类,对其进行反编译后发现: 普通内部类版本: private class List$Node { List...每次生成一个非静态的内部类实例,都会有这样的操作。 恰巧Node类只是外部类的一个组件,他不需要引用外部类的任何字段,所以,把它声明成静态的能减小不必要的消耗。...所以,在定义一个内部类时,如果该内部类不需要引用外部类的非静态属性/方法,则应该将它声明为静态的。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

62910

java静态部类和非静态部类的区别_静态部类有什么问题

一、非静态部类: 1、变量和方法不能声明为静态的。(类的编译顺序:外部类静态方法或属性–内部类,如果内部类声明为静态的,造成编译顺序冲突。...个人理解) 2、实例化的时候需要依附在外部类上面。比如:B是A的非静态部类,实例化B,则:A.B b = new A().new B(); 3、内部类可以引用外部类静态或者非静态属性或者方法。...二、静态部类: 1、属性和方法可以声明为静态的或者非静态的。 2、实例化静态部类:比如:B是A的静态部类,A.B b = new A.B(); 3、内部类只能引用外部类静态的属性或者方法。...比如B是A的静态部类,b()是B中的一个静态属性,则可以:A.B.b(); 三、关于java静态方法的相关总结: 一个类的静态方法只能访问静态属性(静态方法是属于类的,而普通方法是属于对象的。)...”,当然也不能使用”super”; 静态方法不能被非静态方法覆盖; 构造方法不允许声明为 static 的; 局部变量不能使用static修饰; 问题:为什么一个类的静态方法只能访问静态属性或静态方法

53910

java 内部类 静态方法调用_内部类静态部类的调用「建议收藏」

in=new Outside(); //在通过外部类对象创建一个内部类对象 Outside.Indoor oi = in.new Indoor(); //调用内部类自己的属性和方法 oi.Swim()...; System.out.println(oi.oo); //外部类自己调用外部类 in.age=8; System.out.println(in.age); System.out.println(“=...============================================”); //静态部类 //静态部类的创建需要依赖外部类 Out.Ind j=new Out.Ind(); //...静态部类不可以调用外部类的属性和方法 //静态部类调用自己的属性和方法 j.pp=”ajk”; j.Swim(); //在静态部类中,只能使用外部类名直接调用外部的静态属性和方法 Out.age=...{ System.out.println(“我在夕阳狂奔”); } // 静态部类 static class Ind { String pp= “appk”; int age=5; public

98230

Java内部类-成员内部类、局部内部类、匿名内部类静态部类

在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类静态部类。...2.局部内部类 局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法或者该作用域。...(4)局部内部类访问外部类的成员属性或者方法时,直接访问; (5)外部类访问局部内部类的成员属性或者方法时,通过先创建对象,再访问,且必须要在作用域。...静态部类是不需要依赖于外部类的,这点和类的静态成员属性有点类似,并且它不能使用外部类的非static成员变量或者方法,这点很好理解,因为在没有外部类的对象的情况下,可以创建静态部类的对象,如果允许访问外部类的非..." + name + " 外部类静态成员" + Outer.name); } } /** * 通过方法,返回静态部类的实例 * @return

1K10

静态类、静态方法、内部类、匿名内部类、非静态类的一些实践

作者:A哥(YourBatman) 目录 前言 正文 静态部类 vs 内部类 静态方法 vs 非静态方法 匿名内部类部类静态部类的区别 静态类 和普通内部类的区别 内部类的面试题 总结 前言...但如果这个类是内部类,是可以这样写的:public static class A 静态部类 vs 内部类 静态部类:只是为了降低包的深度,方便类的使用,实现高聚。...内部类静态部类的区别 静态类 只能在内部类中定义静态静态部类不依赖于外部类,即使外部类没有创建对象,静态类也可以new对象 静态类的方法可以是静态的方法也可以是非静态的方法,静态的方法可以在外层通过静态类调用...(静态成员只能定义在静态部类里) 和普通内部类的区别 是否能拥有静态成员 静态部类可以有静态成员(方法,属性),而非静态部类则不能有静态成员(方法,属性)。...访问外部类的成员 静态部类只能够访问外部类静态成员,而非静态部类则可以访问外部类的所有成员(方法,属性)。

85650

为啥非静态部类能持有外部类

上次写了一篇关于内存泄漏的文章,里面涉及到一个说法,内部类会持有外部类的引用,静态部类不会持有。这个说法在网上流传甚广。这个说法可能是对的,但是我们还不清楚他们为什么都这么说的。...一、非静态部类 我们来看个例子 public class Outer { private String TAG="Outer"; private Runnable runnable =...二、静态部类 如果我们把Runnable改成静态的看下。...void run() { System.out.println("inner run: " + Outer.TAG); } } 我们可以得到Outer$1并没有Outer,所以静态部类不持有外部类...为啥静态部类不能持有外部类?因为它是静态的,所以它引用的外部类的变量也必须是静态对象。

91440

java的内部类静态部类(嵌套类)

背景 开发新项目,写Swager的mode的时候用到了嵌套Model,于是在代码中,出现了静态部类。在codeReview的时候稍微和大家聊了一下。...内部类 可以将一个类的定义放在另一个类的定义内部,这就是内部类; 嵌套类是其封闭类的成员。非静态嵌套类(内部类)可以访问封闭类的其他成员,即使它们被声明为私有的也是如此。...(回想一下,只能声明外部类public或将其包装为私有。) 2. 静态部类 再一个普通类里面,给内部类加上static关键字的修饰; 与类方法和变量一样,静态嵌套类与其外部类相关联。...两者的区别 内部类只是外部类的成员变量,通俗讲,就是你只能通过先调用外部类才能去拿到这个类(但是这是和组合还是有区别的)。 但是静态部类就像是一个普通类一样。可以直接调用,直接去new对象。 4....总结 嵌套类:内部类静态部类部类属于外部类的成员,必须依赖与外部对象来实现,静态部类,不依赖,可以自己单独实现。 static 的修饰 变量,类,方法,代码块。 共性全局性。

1.6K20

Java中的嵌套类、内部类静态部类

嵌套类可以分为两种,静态的和非静态的,即静态嵌套类和非静态嵌套类。非静态嵌套类又叫做内部类(Inner Class)。...内部类静态嵌套类虽然都是嵌套类,但在使用上是有一些区别的。 内部类 比如有如下内部类的定义, class OuterClass {     ...    ...这样innerObject就可以访问outerObject的所有成员属性以及方法了。  那如果想直接跳过外围类去初始化内部类会怎么样呢?...静态嵌套类   有些人把静态嵌套类成为静态部类,其实静态部类这个称呼不严谨,因为内部类都是非静态的。...由于静态嵌套类没有像内部类那样绑定外部类对象,所以也就不存在静态嵌套类不能访问其外围类的成员这种说法。

1.6K50

部类静态部类的区别_禁止序列化非静态类的内部类

静态部类和非静态部类的区别 主要区别有三点:定义、访问和声明 定义 静态部类中可以定义类变量、类方法、常量、成员变量和方法;非静态部类只能定义常量、成员变量和方法 访问...静态部类只能访问外部类静态成员变量和静态方法,并且不能引用外部类的对象(this);非静态部类可以访问外部类的所有成员和方法 声明 声明静态部类时,不依赖于外部类对象;声明非静态部类时,...依赖于外部类对象 # 静态部类 OutClass.InnerClass innerClass = new OutClass.InnerClass(); # 非静态部类 OutClass.InnerClass...innerClass = new OutClass().new InnerClass(); 内部类使用技巧 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

49210

Java学习笔记 (成员内部类静态部类、匿名内部类、方法内部类

静态部类对象可以不依赖于外部类对象, 直接创建。...静态部类不能直接访问外部类的非静态成员, 但可以通过 “外部类对象· 成员” 的方式访问。...外部类中可以通过“ 类名· 成员名" 的方式直接访问内部类静态成员 定义在外部类方法中的内部类, 也称局部内部类。 方法内部类只在其定义所在的方法的内部可见, 即只在该方法可以 使用。...方法内部类只在其定义所在的方法的内部可见, 即只在该方法可以使用。 方法内部类不能使用访问控制符和static 修饰符, 但可以使用final和abstract 修饰。...public Object getHeart(){ //方法内部类 /** * 1、定义在方法内部,作用范围也在方法 * 2

43620

Java 内部静态类_静态部类特点

Java中的内部类是在Jdk1.1版本之后增加的,内部类是Java语言中一个比较重要的概念,如果能把内部类运用好,那么会明显增强Java程序的灵活性。...要想清楚static内部类和非static内部类的区别,首先要了解内部类的概念及特点,然后再进行一个全面的对比。 什么是内部类呢?...,看一个例子: 第三,可以在方法体内定义一个内部类,方法体内的内部类可以完成一个基于虚方法形式的回调操作,看一个例子: 第四,内部类不能定义static元素,看一个例子: 第五,内部类可以多嵌套,...看一个例子: static内部类是内部类中一个比较特殊的情况,Java文档中是这样描述static内部类的:一旦内部类使用static修饰,那么此时这个内部类就升级为顶级类。...与static内部类不同,内部接口自动具备静态属性,也就是说,普通类是可以直接实现内部接口的,看一个例子: 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

59820

java静态部类和成员内部类的区别

(包括非静态变量和非静态方法)        System.out.println(name);//只能直接访问外部类静态成员 //静态部类只能访问外部类静态成员(包括静态变量和静态方法)       ..., 不能访问外部类的非静态成员, 这是由Java语法中"静态方法不能直接访问非静态成员"所限定.注意, 外部类访问内部类的的成员有些特别, 不能直接访问, 但可以通过内部类实例来访问, 这是因为静态嵌套的所有成员和方法默认为静态的了....同时注意, 内部静态类Person只在类StaticTest 范围可见, 若在其它类中引用或初始化, 均是错误的....静态部类可以有静态成员,而非静态部类则不能有静态成员。 二 . 静态部类的非静态成员可以访问外部类静态变量,而不可访问外部类的非静态变量; 三 ....非静态部类的非静态成员可以访问外部类的非静态变量。     生成一个静态部类不需要外部类成员:这是静态部类和成员内部类的区别。

87210

Java静态部类(static class)

在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。 一、静态部类的使用目的。...如果在外部类中定义了两个变量,一个是非静态的变量,一个是静态的变量。静态部类只能引用外部类中的静态的成员(变量或方法),而不能够访问非静态的变量。...其应用范围远远没有像非静态的内部类那样广泛。 三是在创建静态部类时不需要将静态部类的实例绑定在外部类的实例上。...牢记两个差别: 一、如是否可以创建静态的成员方法与成员变量(静态部类可以创建静态的成员,而非静态的内部类不可以) 二、对于访问外部类的成员的限制(静态部类只可以访问外部类中的静态成员变量与成员方法,...这两个差异是静态部类与非静态部类最大的差异,也是静态部类之所以存在的原因。了解了这个差异之后,程序开发人员还需要知道,在什么情况下该使用静态部类

89410
领券