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

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

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

70550

java部类 java部类作用

java部类作用 为什么在Java中需要内部类?总结一下主要有以下四点:   1.每个内部类都能独立继承一个接口实现,所以无论外部类是否已经继承了某个(接口)实现,对于内部类都没有影响。...3.方便编写事件驱动程序   4.方便编写线程代码   个人觉得第一点是最重要原因之一,内部类存在使得Java多继承机制变得更加完善。...◆Java部类 一、 含义 ---- 在Java编程语言里,程序是由类(class)构建而成。在一个类内部也可以声明类,我们把这样类叫做内部类。 ?...内部类可以直接访问外部类字段和方法,即使是用private修饰,相反,外部类不能直接访问内部类成员。...四、 分类 ---- Java部类可分为成员内部类、局部内部类、匿名内部类、静态内部类

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

Java(内部类

如果一个事物内部包含另一个事物,那么这就是一个类内部包含另一个类; 比如可以比作:"身体和心脏" "汽车和发动机"; 内部类又可以分为: 1、成员内部类 2、局部内部类(匿名内部类) 成员内部类:...成员内部类定义格式: 修饰符 class 外部类名称{ 修饰符 class 内部类名称{ } } 注意:用外可以随意使用,外用,需要内部类对象; 如下图: 如何使用成员内部类...,两种方式: 1、间接访问:在外部类方法中,使用内部类,然后在main只调用外部类方法; 2、直接访问:外部类名称.内部类名称 对象名=new 外部类名称().new 内部类名称(); Body.Heart...) / private 3、局部内部类:什么都不能写 匿名内部类: 如果接口实现类(父类子类)只需要使用一次, 那么这种情况下就可以省略该类定义,用匿名内部类; 格式: 接口名称 对象名=new...; 注意事项: 1、匿名内部类,在创建对象时候,只能使用唯一一次; 如果希望多次创建对象,而且类内容一样的话,匿名就需要使用单独定义实现类了; 2、匿名对象,在调用方法时候,只能调用唯一一次

39210

Java部类

1.成员内部类   成员内部类是最普通部类,它定义为位于另一个类内部,形如下面的形式: ? 这样看起来,类Draw像是类Circle一个成员,Circle称为外部类。...不过要注意是,当成员内部类拥有和外部类同名成员变量或者方法时,会发生隐藏现象,即默认情况下访问是成员内部类成员。如果要访问外部类同名成员,需要以下面的形式进行访问: ?...在外部类中如果要访问成员内部类成员,必须先创建一个成员内部类对象,再通过指向这个对象引用来访问: ?...2.局部内部类   局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类区别在于局部内部类访问仅限于方法或者该作用域。 ?...静态内部类是不需要依赖于外部类,这点和类静态成员属性有点类似,并且它不能使用外部类非static成员变量或者方法,这点很好理解,因为在没有外部类对象情况下,可以创建静态内部类对象,如果允许访问外部类

55110

java_内部类、匿名内部类使用

部类分类 成员内部类,类定义在了成员位置 (类中方法外称为成员位置) 局部内部类,类定义在方法 成员内部类 :定义在类中方法外类。...,包括私有成员 创建内部类对象格式: 外部类名.内部类名 对象名 = new 外部类型().new 内部类型(); 内部类仍然是一个独立类,在编译之后会内部类会被编译成独立.class文件,但是前面冠以外部类类名和符号...class 内部类 { // 成员变量 // 成员方法 } } } 匿名内部类 匿名内部类 :是内部类简化写法。...它本质是一个 带具体实现父类或者父接口匿名子类对象 匿名内部类必须继承一个父类或者实现一个父接口。...定义一个没有名字部类 这个类实现了Swim接口 创建了这个没有名字对象 匿名内部类使用场景 通常在方法形式参数是接口或者抽象类时,也可以将匿名内部类作为参数传递。

61530

Java部类继承

Java部类构造器必须连接到指向其外围类对象引用(构造内部类必须给它一个外部类对象引用,内部类依赖于外部类对象),所以在继承内部类时候,需要在导出类构造器中手动加入对基类构造器调用。...因为,在导出类实例化时,并不存在一个外围类对象,以让导出类实例去连接到它。 所以,我们需要创建一个外围类,然后用一个特定语法来表明内部类与外围类关系。...在下例子中,需要给导出类InheritInner一个来自内部类外围类中引用。...普通继承,只需在导出类构造器中加入super();,而内部类则需要外围类对象引用.super(); 1 class WithInner{ 2 class Inner{} 3 } 4 public...WithInner wi = new WithInner(); 10 InheritInner ii = new InheritInner(wi); 11 } 12 } 而进一步,当被继承部类只有非默认构造器时应该怎么办呢

1.5K40

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

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

1K10

Java部类

下面分别介绍——   普通内部类  普通情况,或者说最典型情况,就是一个Java类嵌在另一个Java类中,形成了、外格局;外部类就是我们普通类,内部类也是普通类,特性都满足Java特性,...} }  不过,通常情况下,也不会这样去创建内部类对象,基于Java封装特性,内部类作为一种封装体现,通常会对调用者隐藏实现细节,而通过外部类方法来返回内部类对象实例。...是的,类也可以是静态,不过必须是内部类才行。静态内部类,也叫嵌套类,Java中标准类库中就有很多现成应用,比如整形包装器中用静态内部类来缓存[-128,127]之间整数。...从这个方面去想,Java设计者通过对于代码编写优化是比我等菜鸟要高深那么一点点点点。。。。    匿名内部类   继续顾名思义,匿名内部类,就是没有类名部类。...追踪Java标准类库一些源码你会发现,平时常用容器类、整形包装器等都有大量使用内部类场景;而平时引入第三方类库、框架中源码也有很多使用内部类

65230

Java部类

//外部类.new 创建内部类 class1.inf(); } }  成员内部类是最普通部类,它定义为位于另一个类内部。...看起来innerClass 像该类一个成员。该类称为外部类,内部类可以无条件访问外部类。 外部类访问内部类需要创建一个对象。 内部类依附外部类而存在,要创建内部类,先要创建外部类对象。...二.局部内部类 该类访问仅限于方法和该作用域 public class Text2 { int qq = 1397995240; int tel = 151888; public outClass...我们可以将main方法写在静态内部类当中,有一个调试功能 它不能使用外部类非static方法 public class Text4 { static int i = 0; static...,这个参数则是外部类对象 text.super();//调用外部类方法 只有这样才能为外部类提供对象引用 } }

39820

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

部类 可以将一个类定义放在另一个类定义内部,这就是内部类; 嵌套类是其封闭类成员。非静态嵌套类(内部类)可以访问封闭类其他成员,即使它们被声明为私有的也是如此。...Java 拥有嵌套类有什么作用呢? 这是一种对仅在一个地方使用类进行逻辑分组方法:如果一个类仅对另一个类有用,那么将其嵌入该类并将两者保持在一起是合乎逻辑。...当Java编译器编译某些构造(例如内部类)时,它会创建综合构造。 这些是类,方法,字段以及其他在源代码中没有相应构造构造。合成构造使Java编译器无需更改JVM就可以实现新Java语言功能。...但是,合成构造在不同Java编译器实现中可能有所不同,这意味着.class文件在不同实现中也可能有所不同。...总结 嵌套类:内部类和静态内部类部类属于外部类成员,必须依赖与外部对象来实现,静态内部类,不依赖,可以自己单独实现。 static 修饰 变量,类,方法,代码块。 共性全局性。

1.6K20

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

参考链接: Java嵌套类 在Java中我们在一个类内部再定义一个类,如下所示:  class OuterClass {     ...    ...内部类与静态嵌套类虽然都是嵌套类,但在使用上是有一些区别的。 内部类 比如有如下内部类定义, class OuterClass {     ...    ...这样innerObject就可以访问outerObject所有成员属性以及方法了。  那如果想直接跳过外围类去初始化内部类会怎么样呢?...静态嵌套类   有些人把静态嵌套类成为静态内部类,其实静态内部类这个称呼不严谨,因为内部类都是非静态。...综上所述,虽然内部类和静态嵌套类都属于嵌套类,但是二者有本质区别:内部类实例化对象需要绑定一个外围类实例化对象,而静态嵌套类实例化对象不能也无法绑定外围类实例化对象。

1.6K50

Java部类与匿名内部类详解

成员内部类 成员内部类 :定义在类中方法外类。 定义格式: class 外部类 { class 内部类{ } } 在描述事物时,若一个事物内部还包含其他事物,就可以使用内部类这种结构。...外部类要访问内部类成员,必须要建立内部类对象。...heart.jump(); } } 输出结果: 心脏在跳动 心脏不跳了 内部类仍然是一个独立类,在编译之后会内部类会被编译成独立.class文件,但是前面冠以外部类类名和符号 。...比如,PersonHeart.class 匿名内部类 匿名内部类 :是内部类简化写法。它本质是一个带具体实现父类或者父接口 匿名 子类对象。开发中,最常用到部类就是匿名内部类了。...匿名内部类就是做这样快捷方式。 前提 匿名内部类必须继承一个父类或者实现一个父接口。

1.4K30

Java部类

部类一般包括这四种:成员内部类、静态内部类、局部内部类和匿名内部类。 每个内部类都能独立地实现一个接口或者抽象类,所以无论其所属主类是否已经实现一个接口或者抽象类,对于内部类都没有影响。...如果没有内部类提供可以继承多个具体或抽象能力,一些设计与编程问题就很难解决。从这个角度看,内部类采可以实现多重继承效果。...成员内部类和静态内部类用private/protected/public修饰时,外部访问规则与访问对应外部类属性/方法规则一样;局部内部类不能使用访问修饰符修饰;匿名内部类甚至都不用class关键字来定义...//内部类调用对应主类同名方法 } } } (1)成员内部类对象中不能定义静态变量、静态方法 (2)要创建成员内部类对象,必须要先创建对应外部类对象 (3)成员内部类引用对应主类同名属性.../方法 (2)匿名内部类中不能定义构造函数 (3)匿名内部类中引用外界变量必须为final

37420

Java部类

部类定义格式如下: public class 外部类名称{ //外部类成员 public class 内部类名称{ //内部类成员 } }...内部类优缺点 使用内部类优点: 1)实现多重继承; 2)内部类可以很好实现隐藏:一般非内部类,是不允许有 private 与protected权限,但内部类可以 3)减少了类文件编译后产生字节码文件大小...应用场合:每一个外部类对象都需要一个内部类实例,内部类离不开外部类存在(相当于心脏对人体) 2、成员内部类特征: 作为外部类一个成员存在,与外部类属性、方法并列成员内部类持有外部类引用,成员内部类中不能定义...3、静态内部类特征: 静态内部类不会持有外部类引用,静态内部类可以访问外部静态变量,如果访问外部类成员变量必须通过外部类实例访问 4、Java中只有内部类才可以是静态 使用格式:Outer.Inner...1、匿名内部类也就是没有名字部类,这是java为了方便我们编写程序而设计一个机制,因为有时候有的内部类只需要创建一个它对象就可以了,以后再不会用到这个类,这时候使用匿名内部类就比较合适。

36720

Java部类

Java中,可以将一个类定义在另一个类里面或者一个方法里边,这样类称为内部类,广泛意义上部类一般包括四种:成员内部类,局部内部类,匿名内部类,静态内部类 。...1.成员内部类 (1)该类像是外部类一个成员,可以无条件访问外部类所有成员属性和成员方法(包括private成员和静态成员); (2)成员内部类拥有与外部类同名成员变量时,会发生隐藏现象,即默认情况下访问是成员内部类成员...如果要访问外部类成员,需要以下形式访问:【外部类.this.成员变量 或 外部类.this.成员方法】; (3)在外部类中如果要访问成员内部类成员,必须先创建一个成员内部类对象,再通过指向这个对象引用来访问...2.局部内部类 (1)局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类区别在于局部内部类访问仅限于方法或者该作用域; (2)局部内部类就像是方法里面的一个局部变量一样,是不能有public...4.内部静态类 (1)静态内部类是不需要依赖于外部类,这点和类静态成员属性有点类似; (2)不能使用外部类非static成员变量或者方法。

28210

Java部类

Java部类部类简介# ---- Java 一个类中可以嵌套另外一个类,语法格式如下: class OuterClass { // 外部类 // ......侧面说明成员内部类依赖于外部类优先创建,不然会初始化失败 局部内部类# ---- 定义在一个方法或者一个作用域里面的类,局部内部类访问仅限于方法或者该作用域 class MyClass{...本部分参考JAVA匿名内部类(Anonymous Classes) 静态内部类# ---- 静态内部类是不需要依赖于外部类,并且它不能使用外部类非static成员变量或者方法,这个和普通静态方法不能访问非静态方法或变量原理一样...# ---- 为什么在 Java 中需要内部类?...总结一下主要有以下四点内部类使用场景和好处: 1.每个内部类都能独立继承一个接口实现,所以无论外部类是否已经继承了某个(接口)实现,对于内部类都没有影响。内部类使得多继承解决方案变得完整。

28700

java部类

Java中,可以将一个类定义在另一个类里面或者一个方法里边,这样类称为内部类,广泛意义上部类一般包括四种:成员内部类,局部内部类,匿名内部类,静态内部类 。...1.成员内部类 (1)该类像是外部类一个成员,可以无条件访问外部类所有成员属性和成员方法(包括private成员和静态成员); (2)成员内部类拥有与外部类同名成员变量时,会发生隐藏现象,即默认情况下访问是成员内部类成员...如果要访问外部类成员,需要以下形式访问:【外部类.this.成员变量  或  外部类.this.成员方法】; (3)在外部类中如果要访问成员内部类成员,必须先创建一个成员内部类对象,再通过指向这个对象引用来访问...2.局部内部类 (1)局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类区别在于局部内部类访问仅限于方法或者该作用域; (2)局部内部类就像是方法里面的一个局部变量一样,是不能有public...4.内部静态类 (1)静态内部类是不需要依赖于外部类,这点和类静态成员属性有点类似; (2)不能使用外部类非static成员变量或者方法。

8710

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

想要理解static应用于内部类含义,你就必须记住,普通部类对象隐含地保存了一个引用,指向创建它外围类对象。然而,当内部类是static时,就不是这样了。嵌套类意味着:  1...., 这是由Java语法中"静态方法不能直接访问非静态成员"所限定.注意, 外部类访问内部类成员有些特别, 不能直接访问, 但可以通过内部类实例来访问, 这是因为静态嵌套所有成员和方法默认为静态了....同时注意, 内部静态类Person只在类StaticTest 范围可见, 若在其它类中引用或初始化, 均是错误....静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 二 . 静态内部类非静态成员可以访问外部类静态变量,而不可访问外部类非静态变量; 三 ....非静态内部类非静态成员可以访问外部类非静态变量。     生成一个静态内部类不需要外部类成员:这是静态内部类和成员内部类区别。

87910
领券