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

Java内部类——静态和非静态内部类、匿名内部类方法部类

,并没有外部类的引用,也就无法调用外部类自己的方法,同时也就屏蔽了外部类的操作 但是如果在内部类中写上外部类的引用和get方法,就可以在这种定义方式的前提下获得外部类的引用了。...静态内部类和非静态内部类是有区别的: 内部类有外部类的this指针,但是静态内部类是没有外部类的this指针的,毕竟两者创建的时间也不用。...这就直接导致了静态内部类无法直接通过this指针访问外部类的变量。...静态内部类和内部类的调用方法也不同(这是当然的) image.png image.png 匿名内部类 public class NoNameInnerClass { public static...AA() { @Override public void aa() { System.out.println("匿名内部类方法执行

89830

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

* 6、内部类编译后.class文件命名:外部类$内部类.class * 7、内部类中是否可以包含与外部类相同的方法签名的方法 */ public class Heart...外部类中可以通过“ 类名· 成员名" 的方式直接访问内部类中静态成员 定义在外部类方法中的内部类, 也称局部内部类方法部类只在其定义所在的方法的内部可见, 即只在该方法可以 使用。...定义在外部类方法中的内部类, 也称局部内部类。...方法部类只在其定义所在的方法的内部可见, 即只在该方法可以使用。 方法部类不能使用访问控制符和static 修饰符, 但可以使用final和abstract 修饰。...public Object getHeart(){ //方法部类 /** * 1、定义在方法内部,作用范围也在方法 * 2

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

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=...(Out.age); //外部类方法直接调用 run(); } } } 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

98530

Java——内部类使用总结(基本概念、定义内部类、static定义内部类方法中定义内部类

1、基本概念 类的组成包括:成员、方法,几乎所有程序都不会对嵌套程序有什么限定,内部类指的是在一个类中继续嵌套其他类结构的一种代码形式,且理论上可以一直嵌套。...(3)目前可发现,实例化内部类的对象操作都是在外部类的fun()方法里面完成的,其他类是否可以直接操作内部类对象,在其他类中实例化内部类对象,语法如下: 外部类名称.内部类名称 对象名称 = new 外部类...利用static定义的 属性和方法是不受类的控制的,相当于一个局外结构,如果内部类使用了static定义,那么此内部类就相当于变成了外部类,只能访问外部类的static属性。...3、方法中定义内部类 理论上内部类可以在任何位置中定义,包括:代码块、类中、方法中,实际开发中,有可能在方法中使用内部类。...【注意】:目前使用的是JDK1.8,如果是1.8以前的版本,一个方法中定义的内部类要访问方法的参数或定义的变量,那么参数或变量前必须要加final。

51330

一篇文章教会你使用Java内部类、成员内部类、静态内部类方法部类

A是一个外部类,在这个类中定义了一个内部类B和test()成员方法,在B类中有一个say()方法是成员内部类去访问外部类的成员变量name和age,在test()方法中创建内部类B实例对象,调用say(...四、方法部类 1.什么是方法部类部类定义在外部类方法中,方法部类只可以在这个方法的内部可见,也就是只可以在这个方法使用。...2.方法部类不可以在外部类方法以外去使用,方法部类不能使用访问控制符和static修饰符。...从上面代码中,在A类的test()方法中定义了一个内部类B,因为内部类B是方法部类,程序在运行只能在方法创建类的实例对象然后调用show()方法方法部类是可以访问外部类的成员变量。...静态内部类是使用static关键字来声明,通过一个如何使用静态内部类案例理解这个用法。 方法部类是内部类定义在外部类方法中,方法部类只可以在这个方法的内部可见,也就是只可以在这个方法使用。

47830

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

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

70550

在Java内部类中使用外部类的成员方法以及成员变量

如在成员变量或者成员方法前面,加上Private关键字,则其他类就无法调用这个类中的成员方法或则和成员变量。但是,如果这个类有成员内部类,则不受这方面的限制。...也就是说,在成员内部类中可以随意引用外部类的成员方法以及成员变量,即使这些类成员方法或者成员变量被修饰了private.如在成员外部类中定义了一个i变量,并且利用private关键字来修饰。...内部类可以访问它外部类的成员,但是内部类的成员(如成员变量或者成员方法)只有在内部类的范围之内是可知的,不能够被外部类直接引用。...只是不能够进行直接的引用,而是要使用内部类对象引用的方法才能够调用内部类的成员变量。这一点程序开发人员需要切记。成员内部类与外部类相互访问彼此的成员方法限制是不同的。...特别需要注意的是,如果在外部类和非静态方法之外实例化内部对象,则需要使用外部类。内部类的形式来制定这个对象的类型。这非常的麻烦。为此要尽量避免在外部类和非静态方法之外实例化内部类对象。

2.7K10

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

在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。...当成员内部类拥有和外部类同名的成员变量或者方法时,会根据就近原则,即默认情况下访问的是成员内部类的成员。...2.局部内部类 局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法或者该作用域。...(3)作用域仅仅在定义它的方法或者代码块中。 (4)局部内部类访问外部类的成员属性或者方法时,直接访问; (5)外部类访问局部内部类的成员属性或者方法时,通过先创建对象,再访问,且必须要在作用域。...匿名内部类主要用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的实现或是重写。 匿名内部类使用一次,就不再使用。

1K10

部类, 静态内部类, 局部类, 匿名内部类的解析和区别

所以内部类的成员变量/方法名可以和外部类的相同。 内部类有什么作用?...(让多个内部类分别继承多个其他类,使外部类可以同时获取多个其他类的属性) 4.可以避免修改接口而实现同一个类中两种同名方法的调用。...而外部类要访问内部类的所有成员变量和方法,内需要通过内部类的对象来获取。(谁叫它是亲儿子呢?) 要注意的是,成员内部类不能含有static的变量和方法。...: 指内部类定义在方法体内,只能在该方法或条件的作用域才能使用,退出这写作用域就无法引用。...局部类不仅可以访问外部类的所有成员,还可以访问方法体的局部变量,但必须是final修饰的局部变量。 为什么局部类访问局部变量,变量必须加上final?

2.3K11

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

作者:A哥(YourBatman) 目录 前言 正文 静态内部类 vs 内部类 静态方法 vs 非静态方法 匿名内部类部类和静态内部类的区别 静态类 和普通内部类的区别 内部类的面试题 总结 前言...但如果这个类是内部类,是可以这样写的:public static class A 静态内部类 vs 内部类 静态内部类:只是为了降低包的深度,方便类的使用,实现高聚。...非静态内部类:它有一个很大的优点:可以自由使用外部类的所有变量和方法,对其外部类有个引用 有了这两个区别,各位看官应该知道什么时候使用什么样的类了吧 静态方法 vs 非静态方法 静态方法(Static...内部类和静态内部类的区别 静态类 只能在内部类中定义静态类 静态内部类不依赖于外部类,即使外部类没有创建对象,静态类也可以new对象 静态类的方法可以是静态的方法也可以是非静态的方法,静态的方法可以在外层通过静态类调用...(静态成员只能定义在静态内部类里) 和普通内部类的区别 是否能拥有静态成员 静态内部类可以有静态成员(方法,属性),而非静态内部类则不能有静态成员(方法,属性)。

86250

【内部类】四种内部类

这一点和外部类有一点不一样,外部类只能被public和protected两种权限修饰符进行修饰。 1. 成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)。...当成员内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,即默认情况下访问的是成员内部类的成员。 3....当内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,即默认情况下访问的是内部类的成员。...是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法或者该作用域。...匿名内部类在编译的时候由系统自动起名为 Outter$1.class。 一般来说,匿名内部类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的实现或是重写。

66410

java内部类 java内部类作用

部类可以直接访问外部类的字段和方法,即使是用private修饰的,相反的,外部类不能直接访问内部类的成员。...四、 分类 ---- Java内部类可分为成员内部类、局部内部类、匿名内部类、静态内部类。...2) 局部内部类 局部内部类的使用和成员内部类的使用基本一致,只是局部内部类定义在外部类方法中,就像局部变量一样,并不是外部类的成员。...局部内部类方法外是无法访问到的,但它的实例可以从方法中返回,并且实例在不再被引用之前会一直存在。...局部内部类也可以访问所在方法的局部变量、方法参数等,限制是局部变量或方法参数只有在声明为final时才能被访问。 ?

2.8K20

部类

只能让外部类直接访问,不允许同一个包中的其他类直接访问。 2. 内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员。 但外部类不能访问内部类的内部属性。...非静态内部类不能有静态方法、静态属性、静态初始化块。 静态成员不能访问非静态成员:外部类的静态方法、静态代码块不能访问非静态内部类,包括不能使用非静态内部类定义变量、创建实例。...内部类方法的局部变量:变量名 2. 内部类属性:this. 变量名 3....当一个静态内部类对象存在,并不一定存在对应的外部类对象。 因此,静态内部类的实例方法不能直接访问外部类的实例方法。 2. 静态内部类看做外部类的一个静态成员。...因此,外部类方法中可以通过:静态内部类.名字 访问静态内部类的静态成员。通过 new 静态内部类()访问静态内部类的实例。 3.

38540

部类

很多的源码中大量用到了内部类,对于这部分基础来做个回顾 分类 静态内部类 如:static class InnerClass{} 成员内部类 如:private class InstaceClass...{} 局部内部类:定义在方法或表达式内部 匿名内部类 (new Thread(){}).start() 无论什么类型的内部类,都会编译成一个独立的.class文件,外部类和内部类之间用$间隔,其中匿名内部类使用数字进行编号...匿名内部类和静态内部类是比较常用的方式,在jdk中,使用内部类封装某种属性和操作的方式比较常见,内部类中还可以嵌套内部类 例如:ThreadLocalMap中又定义了Entry类 好处 在JDK...源码中,在包内定义可见静态内部类的方式很常见,这样做的好处是: 作用域不会扩散到包外 可以通过" 外部类.内部类"的方式直接访问 内部类可以访问外部列中所有的静态属性和方法

22720

在C++中模拟JAVA内部类方法

JAVA的内部类可以自由的访问外围类的所有数据,所以很时候做这的工作,而如果C++也这样做,就变成要增加很多setter和getter。...但是,也可以用以下方法模拟实现: 首先,你的内部类头文件一般是被外围类所#include的,所以需要在内部类的声明前增加“前置声明”: namespace outerspace{ class OuterClass...; } 然后,再设置一个指向外部类的指针: private: OuterClass* outer_obj; 最后,让外部类是内部类的友元: friend outerspace::OuterClass;...以上是内部类的设定,外部类就很简单,只需要保存内部类的指针,然后设置好内部类为友元就可以了: friend InnerClass; private: InnerClass inner_obj; 外部类则需要在初始化过程中设置...在设计API的过程中,内部类需要用到外部类任何成员,包括是private的,都可以用 outer_obj->XXX直接引用。而外部类则可以直接返回内部类的指针(引用)给使用者。

1.9K40

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

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

63110

【小家java】静态类、静态方法、内部类、匿名内部类、非静态类的一些实践

但如果这个类是内部类,是可以这样写的:public static class A 静态内部类的作用:只是为了降低包的深度,方便类的使用,实现高聚。...非静态内部类有一个很大的优点:可以自由使用外部类的所有变量和方法,对其外部类有个引用 有了这两个区别,各位看官应该知道什么时候使用什么样的类了吧 下面是静态方法和非静态方法的区别: 静态方法(Static...3、使用场景 内部类和静态内部类的区别 静态类 只能在内部类中定义静态类 静态内部类不依赖于外部类,即使外部类没有创建对象,静态类也可以new对象 静态类的方法可以是静态的方法也可以是非静态的方法,静态的方法可以在外层通过静态类调用...(静态成员只能定义在静态内部类里) 和普通内部类的区别 是否能拥有静态成员 静态内部类可以有静态成员(方法,属性),而非静态内部类则不能有静态成员(方法,属性)。...访问外部类的成员 静态内部类只能够访问外部类的静态成员,而非静态内部类则可以访问外部类的所有成员(方法,属性)。

2.3K30
领券