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

08 内部类嵌套

目前,见到的、接口枚举类型都定义为顶层类型。也就是说,都是包的直接成员,独立于其他类型。不过,类型还可以嵌套在其他类型中定义。...这种类型是嵌套类型(nested type),一般称为“内部类”,是 Java 语言的一个强大功能。 嵌套类型的使用目的,都封装有关。...根据语境的不同,这个术语可以指代非静态成员、局部类或匿名,但不能指代静态成员类型,因此使用“内部类”这个术语时无法区分指代的是哪种嵌套类型。...静态成员类型 语法上,静态内部类除了位置放在其他内部,它与一个独立的差别不大,可以有静态变量、静态方法、成员方法、成员变量、构造方法等。...局部类往往在方法中定义,但也可以在的静态初始化程序或实例初始化程序中定义。 因为所有 Java 代码块都在中,所以局部类嵌套在外层中。因此,局部类成员有很多共同的特性。

64210

Java 的嵌套(内部类和静态嵌套

class NestedClass {        ...    } } 复制代码  内部类与静态嵌套    嵌套有静态非静态两种,其中静态的称为静态嵌套(static nested classes...),非静态的称为内部类(Inner Classes)  一个嵌套是包含它的外部类的一个成员,内部类能够访问外部类的其他成员,而静态嵌套没有访问外部类的权限  作为外部类的成员,嵌套能被声明为private...静态嵌套   静态嵌套与静态里面的方法类似,一个静态嵌套不能直接调用外部类里面的实例变量或者方法,它只能通过对象引用访问他们。  ...一个静态嵌套与其他任何 top-level class 一样和他的外部类的其他成员相互作用。...实际上,为了封装的便利性,一个静态嵌套的作用机制其他被封装的 top-level class相同。

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

java的内部类和静态内部类嵌套

背景 开发新项目,写Swager的mode的时候用到了嵌套Model,于是在代码中,出现了静态内部类。在codeReview的时候稍微大家聊了一下。...尤其是Static 修饰修饰对象变量不一样呢? 定义 1. 内部类 可以将一个的定义放在另一个的定义内部,这就是内部类嵌套是其封闭的成员。...非静态嵌套(内部类)可以访问封闭的其他成员,即使它们被声明为私有的也是如此。静态嵌套无权访问封闭的其他成员。...静态内部类 再一个普通里面,给内部类加上static关键字的修饰; 与方法变量一样,静态嵌套与其外部类相关联。...嵌套此类“帮助程序”可使它们的程序包更加简化。 它增加了封装:考虑两个顶级AB,其中B需要访问A的成员,否则将对其进行声明private。

1.6K20

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

嵌套可以分为两种,静态的非静态的,即静态嵌套非静态嵌套。非静态嵌套又叫做内部类(Inner Class)。...内部类与静态嵌套虽然都是嵌套,但在使用上是有一些区别的。 内部类 比如有如下内部类的定义, class OuterClass {     ...    ...静态嵌套   有些人把静态嵌套成为静态内部类,其实静态内部类这个称呼不严谨,因为内部类都是非静态的。...由于静态嵌套没有像内部类那样绑定外部类对象,所以也就不存在静态嵌套不能访问其外围的成员这种说法。  ...综上所述,虽然内部类和静态嵌套都属于嵌套,但是二者有本质区别:内部类的实例化对象需要绑定一个外围的实例化对象,而静态嵌套的实例化对象不能也无法绑定外围的实例化对象。

1.6K50

Effective Java-嵌套(内部类)

嵌套是指被定义在另一个内部的。 概念 嵌套(nested class)是指被定义在另一个内部的嵌套的存在目的应该只是为外围(enclosing class)提供服务。...嵌套有四种: 静态成员(static member class); 非静态成员(nonstatic member class); 匿名(anonymous class); 局部类(local class...除了第一种,其他三种都被成为内部类(inner class)。静态嵌套, 就是用static修饰的成员嵌套。...只能在使用的同时被声明实例化,没有构造方法。 当且仅当匿名出现在非静态的环境中时,才有外围实例。 即使匿名出现在静态的环境中,也不可能拥有任何静态成员。 匿名不能实现接口或者扩展一个。...是四种嵌套中用的最少的。 局部类不能有访问控制符(private,public,protected修饰),可以是抽象的,也可以定义为final。

63820

C++嵌套与局部类

代码编译运行环境:VS2012+Debug+Win32 ---- 1.嵌套 1.1嵌套的定义 在一个体中定义的叫作嵌套。拥有嵌套叫外围。...1.2嵌套的作用 定义嵌套的初衷是建立仅供某个的成员函数使用的类型。目的在于隐藏名,减少全局的标识符,从而限制用户能否使用该类建立对象。...这样可以提高的抽象能力,并且强调了两个(外围嵌套)之间的主从关系。...2.局部类 2.1局部类的定义 在一个函数体内定义的称为局部类。局部类可以定义自己的数据成员函数成员。它也是一种作用域受限的。...(4)局部类中不能定义静态数据成员,因为这种数据成员的初始化无法完成,静态成员数据的定义初始化必须放在全局作用域。 在实践过程中,局部类很少使用。

1.1K10

Java学习笔记:深入理解嵌套部类

1.1.1 什么是嵌套及内部类? 可以在一个的内部定义另一个,这种类称为嵌套(nested classes),它有两种类型: 静态嵌套非静态嵌套。...静态嵌套使用很少,最重要的是非静态嵌套,也即是被称作为内部类(inner)。嵌套从JDK1.1开始引入。...注意,外部类访问内部类的的成员有些特别,不能直接访问,但可以通过内部类来访问,这是因为静态嵌套内的所有成员方法默认为静态的了。...另外,就是要注意,内部类Inner及 InnterTwo只在Outer的作用域内是可知的,如果类Outer的任何代码尝试初始化Inner或使用它,编译就不会通过。...同时,我们需注意最后一个问题,那就是,内部类同其它一样被定义,同样它也可以继承外部其它包的实现外部其它地方的接口。同样它也可以继承同一层次的其它的内部类,甚至可以继承外部类本身。

64020

友元嵌套

友元的所有方法都可以访问原始的私有成员保护成员,但也可以对其做更严格的限制,使得特定的成员函数成为另一个的友元。...嵌套 c++允许将的声明放在另外一个中,在另外一个中声明的被称为嵌套。对进行嵌套的主要目的是为了帮助实现另外一个,并避免名称冲突。...嵌套包含 包含往往意味着将对象作为另外一个的成员,而嵌套不创建成员,而是定义一种类型,该类型仅在包含嵌套声明中有效。...(注:嵌套结构枚举与嵌套相似,也适用于上表。)...声明的位置决定了的作用域可见性。可见后,访问控制规则(公有、私有、保护、友元)决定程序对嵌套成员的访问权限。

70640

区分接口抽象

2 抽象方法必须存在于抽象中。 3 抽象中可以有一般的变量一般的方法。 4 子类继承抽象必须实现其中抽象方法,除非子类为抽象。...接口抽象的区别 1 接口只能包含抽象方法,抽象可以包含普通方法。 2 接口只能定义静态常量属性,抽象既可以定义普通属性,也可以定义静态常量属性。...抽象不能被实例化,但不代表它不可以有构造函数,抽象可以有构造函数,备继承扩充 1 接口是核心,其定义了要做的事情,包含了许多的方法,但没有定义这些方法应该如何做。...如果单从具体代码来看,对这两个概念很容易模糊,甚至觉得接口就是多余的,因为单从具体功能来看,除多重继承(C#,Java中),抽象类似乎完全能取代接口。但是,难道接口的存在是为了实现多重继承?...再者,我认为接口抽象的另一个区别在于,抽象和它的子类之间应该是一般特殊的关系,而接口仅仅是它的子类应该实现的一组规则。 (转自脚本之家)

44830

静态内部类部类的区别_内部类不能定义为抽象

今天稍微复习一下 静态内部类部类的相关知识,平常很少用 静态内部类 静态内部类,不能访问外部类的非静态成员 静态内部类 不需要创建外部类的对象就可访问(外部类名.内部类 比如new MyMain.Person...public void display() { // System.out.println(num);//不能直接访问外部类的非静态成员 // 静态内部类不能访问外部类的非静态成员(包括非静态变量非静态方法...(外部类名.this.变量名) 可以定义在方法外(可以有访问修饰符)方法内(不能有访问修饰符,这个就是匿名内部类了) public class TestInner { private static...正常情况下,你不能在接口内部放置任何代码,但嵌套可以作为接口的一部分,因为它是static 的。...只是将嵌套置于接口的命名空间内,这并不违反接口的规则,我试验了一下 ,无论是静态还是非静态都可以写在接口里。

33520

部类(来自对象的补充)

之前我们在讲对象时就提到过内部类,不过当时说了等讲完抽象接口再讲这个,现在兑现诺言的时候到了,那我们开始内部类的学习吧! 内部类 ❤️❤️内部类是指在一个的内部定义的另一个。...内部类可以访问外部类的所有成员,包括私有成员。内部类提供了一种封装组织代码的方式,可以将相关的接口放在一起,增加代码的可读性可维护性。...如下: 此时就因为a同名导致直接使用a时优先选择内部类中的a,所以athis.a都表示内部类中的a,而如果我们硬要使用外部类中的a时,就可以用 外部类名.this.a如OutClass.this.a...(这个懂得都懂,就不多讲了) ❤️❤️除此之外,到了其他中我们用内部类对象引用就只能引用其内部方法变量(不能引用外部类的) 用外部类对象引用也只能引用其方法变量(不能引用内部类的)...其语法格式如下: ​ 接口 名 = new 接口() { // 匿名内部类的成员变量方法 }; ​ 注意实施该接口的被隐藏了,没有显示出来(以及implements也没显示出来),我们new

6010

Java-“this”名.this”以及“名.class”的区分详解

引言: 对于以上三个语法结构的区分,需要先理解Class 所有对象的以及调用了静态方法的都需要在对象创建之前在JVM虚拟机中加载,加载内容被称为“对象”,每个对象是唯一且是不可变的。...基本的 Java 类型(boolean、byte、char、short、int、long、float double)关键字 void 也都对应一个 Class 对象,其名字相同的对象名。...每个数组属于被映射为 Class 对象的一个,所有具有相同类型维数的数组都共享该 Class 对象。...名.this : 名.this一般用于内部类调用外部类的对象时使用,因为内部类使用this.调用的是内部类的域方法,为了加以区别,所以使用名.this来加以区分。....class 指向每个对应的唯一对象(类型为Class) 名.this 内部(可以是匿名内部类)调用外部类的对象时使用,即在内部类中使用时:外部类对象是外部类名.this,内部类对象则是this

6.9K40

如何区分同步复位异步复位?

今天给大侠带来如何区分同步复位异步复位?,话不多说,上货。 如何区分同步复位异步复位?...以上问题可以理解为: 1、何时采用同步复位,何时采用异步复位; 2、复位电路是用来干嘛的; 3、激励响应的分析(单拍潜伏期)是否适用于复位逻辑。...2、复位电路是对特定输出信号的初始化,即上电之后,实际电路未工作之前,你希望电路从什么样的原始状态(指所有需要管理的内部信号外部信号)开始工作,而对这些原始状态的初始化,则是复位电路的职能。...3、激励响应,应用于同步电路中,相同时钟域的潜伏期分析,根据单拍潜伏期规律(或定律),适合所有信号。但你的问题应该明确:激励是输入,响应是输出。复位信号是输入,是激励,不是响应。 END

1K30

C++从入门到精通——内部类匿名

部类匿名都是C++等编程语言的重要特性,它们可以简化代码结构,提高代码重用性。...内部类可以在外部类的成员函数中访问外部类的私有成员,这样可以方便地实现封装隐藏的特性。内部类还可以用于实现回调函数迭代器等功能。...运行上述代码将输出: Outer data: 10 这个示例展示了内部类如何访问外部类的私有成员,并且如何使用内部类作为外部类的一部分来实现更清晰封装的代码结构。...可以定义成员变量成员方法:在匿名内部,可以定义自己的成员变量成员方法。这些成员变量成员方法仅在匿名内部可见。...它可以用于一些需要局部定义的简单情况,而无需单独为其创建一个命名。 尽管匿名具有一定的灵活性便利性,但由于它的作用域无法重用的特性,通常情况下更推荐使用命名来组织管理代码。

15410

Java的内部类匿名 , 您了解过吗?

之前在学习Android百度地图的时候,发现一个Activity中居然有两个嵌套(Class),成功引起了我的注意,于是最近在暑假系统了学习了Java中的四种内部类。...最初在大二入门Java的时候,我就了解过Java的匿名部类,那时候觉得这些都是理论性的东西,实际开发不一定能用到,于是就淡化了。...,简单来讲,实体的成员变量必须为私有类型,并且提供 set get 方法让外部获取、修改变量。...(图片来源于网络,侵删) ---- 2.1 成员内部类 成员内部类,顾名思义就是内部类作为成员存在于中,成员变量、成员方法同级。...比如下面这个 People ,包含了一个内部类 Book,该类成员变量 userName 、userAge 同级。

24220

高管必备思维:区分2问题4可视化方法

本文通过两大问题,清晰划分出了四可视化方法,告诉你在四种不同的情况、目标下,你应该如何利用可视化提升自己的管理技能。...随着互联网各种低价甚至免费的工具的出现,即便是一个没有什么数据设计背景的人都可以迅速将信息转化成可视化图型。...你应该展示人的行为是如何影响数据的,人是怎样让这些线上下波动。...它被用于发现如何看待商业运作以及解决复杂管理问题的新方法:公司团体重组,开发新商务流程,为决策系统编制规则。...复杂的数据有时候也适合特殊的可视化,比如force-directeddiagrams展示网络如何分类,以及地理相关的图表。

32420
领券