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

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

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

69850

Java部类的意义及应用

由于静态内部类内部只能访问它的外部的静态成员,而对于访问权限可见的情况下,这两个类本质上毫无关联,但如果像我们此例中的外部类属性 name 而言,它本身被修饰为 private,不可见于外部的任何类。...静态内部类应用场景其实还是很多的,但有一个基本的设计准则是,静态内部类不需要依赖外围类的实例,独立于外围类,为外围类提供服务。...于是 Java 干脆不允许成员内部类中定义静态的成员。...局部内部类 局部内部类就是在代码块中定义一个类,最典型的应用是在方法中定义一个类。...如果方法是实例方法,那么方法的内部类可以访问外围类的任意成员,如果方法是静态方法,那么方法内部的内部类只能访问外围类的静态成员。

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

java部类 java部类作用

java部类作用 为什么在Java中需要内部类?总结一下主要有以下四点:   1.每个内部类都能独立的继承一个接口的实现,所以无论外部类是否已经继承了某个(接口的)实现,对于内部类都没有影响。...3.方便编写事件驱动程序   4.方便编写线程代码   个人觉得第一点是最重要的原因之一,内部类的存在使得Java的多继承机制变得更加完善。...◆Java部类 一、 含义 ---- 在Java编程语言里,程序是由类(class)构建而成的。在一个类的内部也可以声明类,我们把这样的类叫做内部类。 ?...四、 分类 ---- Java部类可分为成员内部类、局部内部类、匿名内部类、静态内部类。...我们知道加载类时,会先初始化静态成员,如果成员内部类有静态成员,那么内部类就会在外部类之前生成,而内部类是为外部类服务的,内部类在外部类之前就生成可能会脱离掌控。

2.8K20

Java部类

1.成员内部类   成员内部类是最普通的内部类,它的定义为位于另一个类的内部,形如下面的形式: ? 这样看起来,类Draw像是类Circle的一个成员,Circle称为外部类。...虽然成员内部类可以无条件地访问外部类的成员,而外部类想访问成员内部类的成员却不是这么随心所欲了。...虽然成员内部类可以无条件地访问外部类的成员,而外部类想访问成员内部类的成员却不是这么随心所欲了。...2.局部内部类   局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法或者该作用域。 ?...静态内部类是不需要依赖于外部类的,这点和类的静态成员属性有点类似,并且它不能使用外部类的非static成员变量或者方法,这点很好理解,因为在没有外部类的对象的情况下,可以创建静态内部类的对象,如果允许访问外部类的非

55010

Java(内部类

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

39210

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

Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。...从定义的位置上看: (1)定义在外部类的方法体内/代码块 局部内部类(有类名) 匿名内部类(没有类名) (2)定义在外部类的成员位置上 静态内部类(有static修饰符) 成员内部类(没有static修饰符...2.局部内部类 局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法或者该作用域。...(4)局部内部类访问外部类的成员属性或者方法时,直接访问; (5)外部类访问局部内部类的成员属性或者方法时,通过先创建对象,再访问,且必须要在作用域。...name:" + inner.name); } } 3.匿名内部类 Java 中可以实现一个类中包含另外一个类,且不需要提供任何的类名直接实例化。

1K10

Java部类

这篇先讲讲Java部类相关的东西。都是结合书本内化而来的,有知识点,也有布衣博主自己的料。...下面分别介绍——   普通内部类  普通情况,或者说最典型的情况,就是一个Java类嵌在另一个Java类中,形成了、外的格局;外部类就是我们普通的类,内部类也是普通的类,特性都满足Java类的特性,...} }  不过,通常情况下,也不会这样去创建内部类对象,基于Java封装的特性,内部类作为一种封装的体现,通常会对调用者隐藏实现细节,而通过外部类的方法来返回内部类的对象实例。...是的,类也可以是静态的,不过必须是内部类才行。静态内部类,也叫嵌套类,Java中标准类库中就有很多现成的应用,比如整形的包装器中用静态内部类来缓存[-128,127]之间的整数。...Thread thread = new Thread(() -> { }); thread.start(); } }   线程的创建应该是我们比较常见的匿名内部类应用

65230

Java部类

部类的种类: 成员内部类、静态内部类、局部内部类、匿名内部类 成员内部类 1、成员内部类也叫实例内部类。...应用场合:每一个外部类对象都需要一个内部类的实例,内部类离不开外部类存在(相当于心脏对人体) 2、成员内部类的特征: 作为外部类的一个成员存在,与外部类的属性、方法并列成员内部类持有外部类的引用,成员内部类中不能定义...2、静态内部类使用场合:内部类不需要外部类的实例(注意区分成员内部类),静态内部类存在仅仅为外部类提供服务或者逻辑上属于外部类,且逻辑上可以单独存在。...3、静态内部类的特征: 静态内部类不会持有外部类的引用,静态内部类可以访问外部的静态变量,如果访问外部类的成员变量必须通过外部类的实例访问 4、Java中只有内部类才可以是静态的 使用格式:Outer.Inner...1、匿名内部类也就是没有名字的内部类,这是java为了方便我们编写程序而设计的一个机制,因为有时候有的内部类只需要创建一个它的对象就可以了,以后再不会用到这个类,这时候使用匿名内部类就比较合适。

36620

Java部类

部类一般包括这四种:成员内部类、静态内部类、局部内部类和匿名内部类。 每个内部类都能独立地实现一个接口或者抽象类,所以无论其所属的主类是否已经实现一个接口或者抽象类,对于内部类都没有影响。...成员内部类和静态内部类用private/protected/public修饰时,外部访问规则与访问对应外部类的属性/方法的规则一样;局部内部类不能使用访问修饰符修饰;匿名内部类甚至都不用class关键字来定义...//内部类调用对应主类的同名方法 } } } (1)成员内部类对象中不能定义静态变量、静态方法 (2)要创建成员内部类对象,必须要先创建对应外部类的对象 (3)成员内部类引用对应主类的同名属性...、构造代码块、方法中 (2)局部内部类不可以用访问修饰符(private/protected/public)修饰 4、匿名内部类 匿名内部类也是一种局部内部类,不需要用class关键字来声明,匿名内部类通常是一个抽象类或接口的实现.../方法 (2)匿名内部类中不能定义构造函数 (3)匿名内部类中引用的外界变量必须为final

37220

Java部类

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

28210

Java部类

Java部类部类简介# ---- Java 一个类中可以嵌套另外一个类,语法格式如下: class OuterClass { // 外部类 // ......外部类访问内部类需要先创建一个内部类对象 成员内部类是依附外部类而存在 可以访问外部类原理 编译器会在编译时生成外部类和内部类两个字节码文件,还会给内部类的无参构造函数增加一个参数,为外部类的一个应用...侧面说明成员内部类依赖于外部类的优先创建,不然会初始化失败 局部内部类# ---- 定义在一个方法或者一个作用域里面的类,局部内部类的访问仅限于方法或者该作用域 class MyClass{...public static void main(String[] args) { Outer.Inner inner = new Outer.Inner(); } } 内部类简单应用...# ---- 为什么在 Java 中需要内部类

28700

java部类

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

8410

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

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

1K10

java】浅谈java部类

前言 说到java部类,想必大家首先会想到比较常用的“匿名内部类”,但实际上,这只是内部类的其中一种使用方式而已。...而希望能将Part.java的数据隐藏在MyClass.java内部,于是这个时候内部类就堂而皇之地出现了 那么,这个不请自来的内部类到底给我们上述的局面造成了怎样的改变呢?...新增了一个java文件 使用内部类,将Part类的定义写入MyClass内部 1. 可以减少多余的可见性,例如可把Part在MyClass内部定义为私有,这样对同一包其他类也不可见了 2....();   } } 结果输出: 内部数据 如此可见,内部类声明的数据会覆盖外部类的同名数据。...(基本类型数据拷贝副本,对象等则拷贝引用) OK,现在的情况是: 方法的局部类对data拷贝了两次:外部方法outterPrint值传递时的拷贝,和LocalInner构造函数的拷贝 方法除了局部类外的作用域只拷贝了

943101

JAVA篇----内部类

部类主要特性: 1.内部类可以对同一个包中的其他类隐藏 2.内部类方法可以访问外部类的作用域中的数据,包括原本的私有数据 3.内部类对象总有一个隐式引用,指向创建它的外部类对象,这个引用在内部类的定义中是不可见的...4.静态内部类中没有这个附加的引用(指针),所有Java的静态内部类就相当于C++中的嵌套类 5.静态内部类不能使用外部类中非static成员变量和方法 6.内部类中声明的所有静态字段必须是final,...7.内部类中不能用static方法,也可以有静态方法,但只能访问外部类中的静态字段和方法 8.内部类可以声明为final,还可以用private和protected关键字进行访问权限修饰 9.内部类可以声明为...abstract,因此可以被其他的内部类继承 10.非static的内部类中的成员不能声明为static的,只有在外部类或static的内部类中才能声明static成员 11.多用内部类来实现c++的多重继承功能...var temp1=new A().new innerC(); temp1.getCAngry(); } } class A//让类A同时继承B和C是非法的,我们需要通过内部类来间接实现

18820

Java部类详解

静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)。内部类JAVA语言的主要附加部分。...内部类中的属性和方法即使是外部类也不能直接访问,相反内部类可以直接访问外部类的属性和方法,即使private利于回调函数的编写, Java的四种内部类 成员内部类 局部内部类 匿名内部类 静态内部类...对于这个类的使用主要是应用与解决比较复杂的问题,想创建一个类来辅助我们的解决方案,到那时又不希望这个类是公共可用的,所以就产生了局部内部类。...我们知道非静态嵌套类在编译完成之后会隐含地保存着一个引用,该引用是指向创建它的外围,但是静态嵌套类却没有。没有这个引用就意味着。 1....以上就是所有的java部类的各种模式的简单例子 大家要注意一点,java中只能在内部类中创建静态成员的类,也就是静态嵌套类,也有很多人疑惑为什么 java 静态嵌套部类中可以有非静态成员,还有为什么可以

68020

Java部类详解

一.内部类基础   在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。...2.局部内部类   局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法或者该作用域。..." public class com.cxh.test2.Outter$Inner extends java.lang.Object SourceFile: "Outter.java" InnerClass...三.内部类的使用场景和好处   为什么在Java中需要内部类?...3.方便编写事件驱动程序   4.方便编写线程代码   个人觉得第一点是最重要的原因之一,内部类的存在使得Java的多继承机制变得更加完善。

42410
领券