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

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

); } } } 虽然成员部类可以无条件地访问外部类成员,而外部类想访问成员部类成员却不是这么随心所欲了。...在外部类中如果要访问成员部类成员,必须先创建一个成员部类的对象,再通过指向这个对象的引用来访问。...当成员部类拥有和外部类同名的成员变量或者方法时,会根据就近原则,即默认情况下访问的是成员部类成员。...2.局部内部类 局部内部类是定义在一个方法或者一个作用域里面的类,它和成员部类的区别在于局部内部类的访问仅限于方法或者该作用域。...(4)局部内部类访问外部类成员属性或者方法时,直接访问; (5)外部类访问局部内部类成员属性或者方法时,通过先创建对象,再访问,且必须要在作用域

1K10

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

也就是说,在成员部类中可以随意引用外部类成员方法以及成员变量,即使这些类成员方法或者成员变量被修饰了private.如在成员部类中定义了一个i变量,并且利用private关键字来修饰。...如此就可以保证,利用外部类创建对象的同时创建了内部类的对象。从而可以保证Java内部类的实例绑定在外部类的实例上。  成员部类成员方法与成员变量的私有性。 ...作为成员部类,可以随意引用外部类中的成员变量与成员方法。那么在成员部类中定义的成员变量,外部类是否也可以随意访问呢?答案是否定的。...内部类可以访问它外部类成员,但是内部类成员(如成员变量或者成员方法)只有在内部类的范围之内是可知的,不能够被外部类直接引用。...在外部类成员部类中,都可以定义变量。成员部类可以随意访问外部类中的变量,而外部类不能够直接访问内部类中的变量,只有通过使用内部类对象来引用内部类成员变量。

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

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

,更好的实现了信息隐藏 成员部类 1、内部类在外部使用时,无法直接实例化,需要借由外部类信息才能完成实例化 2、内部类的访问修饰符,可以任意,但是访问范围会受到影响 3、内部类可以直接访问外部类成员...静态内部类不能直接访问外部类的非静态成员, 但可以通过 “外部类对象· 成员” 的方式访问。...外部类中可以通过“ 类名· 成员名" 的方式直接访问内部类中静态成员 定义在外部类方法中的内部类, 也称局部内部类。 方法内部类只在其定义所在的方法的内部可见, 即只在该方法可以 使用。...方法内部类只在其定义所在的方法的内部可见, 即只在该方法可以使用。 方法内部类不能使用访问控制符和static 修饰符, 但可以使用final和abstract 修饰。...public Object getHeart(){ //方法内部类 /** * 1、定义在方法内部,作用范围也在方法 * 2

43620

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

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

87210

【Java入门提高篇】Day6 Java内部类——成员部类

部类跟外部类有什么关系?   ...内部类也分很多种:成员部类、静态内部类、局部内部类、匿名内部类。今天先来说说第一种:成员部类。   ...成员部类是最简单粗暴的内部类,上面那个栗子中的Inner类就是成员部类,相比普通的类,成员部类是不能有static修饰的成员或者方法的,因为成员部类是寄生在外部类中的,所以必须先有外部类实例才能有成员部类...因为当我们在创建某个外围类的内部类对象时,会往内部类传入一个外部类的引用,只要我们在访问外部类成员时,就会用这个引用来选择外围类的成员。...当然,内部类跟外部类还有一个很重要区别:内部类可以用private修饰,而外部类是不能使用private修饰的。如果内部类仅仅在类内部使用时,使用private修饰后,就可以更好的隐藏内部信息。

45260

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

然而外部类不能访问内部类的实现细节(如内部类成员变量)。 二、成员部类 1.什么是成员部类 在一个类中可以定义成员变量、成员方法外,还可以定义类就叫做成员部类。...成员部类可以访问外部类的所有成员。...四、方法内部类 1.什么是方法内部类部类定义在外部类的方法中,方法内部类只可以在这个方法的内部可见,也就是只可以在这个方法使用。...五、总结 本文主要介绍了内部类成员部类、静态内部类、方法内部类成员部类是在一个类中可以定义成员变量、成员方法外,还可以定义类。通过一个怎么定义成员部类案例帮助理解这个用法。...静态内部类是使用static关键字来声明,通过一个如何使用静态内部类案例理解这个用法。 方法内部类是内部类定义在外部类的方法中,方法内部类只可以在这个方法的内部可见,也就是只可以在这个方法使用。

47630

_类成员函数可以访问本类对象的私有成员

成员函数可以访问本类对象的私有成员 sList是一个类 私有成员是head,有一个成员函数的形参是本类对象(的引用,引不引用不影响结论和原因) ==为什么呢!...对象b是sList类的,而这个intersection函数是sList的成员函数 head虽然是sList类的对象的私有成员,但是是在sList类访问的 ==就是 在类访问了本类(的实例化对象)的私有成员...因为这是在类访问的,又不是在类外== 这说明了,类的成员的访问权限,是对于==类==而言的,决定在==类==外是否可被访问 而非对于对象来说的(因为对象不同但是都是属于同一种类,类的实例化对象的成员,...本来就是类的成员,只是抽象和实例化的问题 这非常合理地体现了 类 的封装性 这个就是不行的,在类外访问了 这一点是非常好用的,可以利用这一点 ==用成员函数肆无忌惮地访问对象的私有成员!...==只要声明函数是类的成员函数,将外部同类对象设为形参(或加个引用)就可以了!! 不必再为如何访问到同类外部对象的私有成员而苦思了!

81930

java学习之路:28.内部类成员,局部,匿名,静态)以及继承

如果在类中再定义一个类,则将在类中再定义的那个类称为内部类。 一.成员部类 1.成员部类介绍 在一个类中使用内部类,可以在内部类中直接获取其所在类的私有成员变量。...} } 在内部类中可以随意使用外部类成员方法以及成员变量。...3.使用this关键字获取内部类与外部类的引用 如果在外部类中定义的成员变量和内部类成员变量名称相同,可以使用this关键字。...四.静态内部类 在内部类前添加修饰符static,这个内部类就变为静态内部类了。一个静态内部类中可以声明static成员,但是在非静态内部类中不可以声明静态成员。...静态内部类有一个最大的特点,就是不可以使用外部类的非静态成员

34331

【C++类和对象】探索static成员、友元以及内部类

; 计算正在使用的类对象个数可以通过计算一共构建了多少个类对象减去生命周期已经结束的类对象; 而构建类对象无非通过普通的构造函数或者拷贝构造来实现,所以我们在这两个函数++_scount,一旦构造函数被调用就说明创建了一个新的对象...3.内部类 概念:如果一个类定义在另一个类的内部,这个内部类就叫做内部类。 内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去访问内部类成员。外部类对内部类没有任何优越的访问权限。...注意:内部类就是外部类的友元类,参见友元类的定义,内部类可以通过外部类的对象参数来访问外部类中的所有成员。但是外部类不是内部类的友元。...特性: 内部类可以定义在外部类的public、protected、private都是可以的。 注意内部类可以直接访问外部类中的static成员,不需要外部类的对象/类名。...内部类可以直接访问外部类成员,包括私有成员,而外部类则不能直接访问内部类成员。 此外我们还再次理解了类和对象的含义,以上就是今天所有的内容啦~ 完结撒花 ~

100

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

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

69850

【Java基础】类的成员总结(属性,方法,构造器,代码块,内部类

先声明,后使用 1.3 变量都有其对应的作用域 2.不同点: 2.1 在类中声明的位置的不同 属性:直接定义在类的一对{} 局部变量:声明在方法、方法形参、代码块、构造器形参、构造器内部的变量...1.成员部类 (1)该类像是外部类的一个成员,可以无条件的访问外部类的所有成员属性和成员方法(包括private成员和静态成员); (2)成员部类拥有与外部类同名的成员变量时,会发生隐藏现象,即默认情况下访问的是成员部类中的成员...如果要访问外部类中的成员,需要以下形式访问:【外部类.this.成员变量 或 外部类.this.成员方法】; (3)在外部类中如果要访问成员部类成员,必须先创建一个成员部类的对象,再通过指向这个对象的引用来访问...外部类只能被public和包访问两种权限修饰。 (6)类可以定义属性、方法、构造器等 可以被final修饰,表示此类不能被继承。...言外之意,不使用final,就可以被继承 可以被abstract修饰,可以被static修饰 2.局部内部类 (1)局部内部类是定义在一个方法或者一个作用域里面的类,它和成员部类的区别在于局部内部类的访问仅限于方法或者该作用域

41130

VC和GCC成员函数指针实现的研究(一)

图片 图三: VC虚成员函数vcall实现 这里把cx取出并取值后加了8的地址偏移,说明VC单继承情况下的虚表指针放在了数据结构最前面。+8显然是第二个虚函数的地址偏移(第一个是析构)。...由此来保证调用的是子类里的成员函数。 好吧运行结果还是有必要贴一下的 图片 图四: VC单继承测试代码执行结果 GCC单继承成员函数指针实现 接下来就是GCC了。GCC是怎么实现的呢?...图片 图五:GCC单继承下成员函数指针赋值操作 很明显就和VC不一样啦,GCC在给成员函数指针赋值的时候,给了两个值,第二个暂时没用到后面讨论。...往下看函数调用: 图片 图六:GCC单继承下成员函数指针调用 可以看到,GCC的成员函数指针和VC的设计明显不同。...下一篇 VC和GCC成员函数指针实现的研究(二)

47420

VC和GCC成员函数指针实现的研究(一)

image.png 图三: VC虚成员函数vcall实现 这里把cx取出并取值后加了8的地址偏移,说明VC单继承情况下的虚表指针放在了数据结构最前面。...由此来保证调用的是子类里的成员函数。 好吧运行结果还是有必要贴一下的 image.png 图四: VC单继承测试代码执行结果 GCC单继承成员函数指针实现 接下来就是GCC了。...image.png 图五:GCC单继承下成员函数指针赋值操作 很明显就和VC不一样啦,GCC在给成员函数指针赋值的时候,给了两个值,第二个暂时没用到后面讨论。...往下看函数调用: image.png 图六:GCC单继承下成员函数指针调用 可以看到,GCC的成员函数指针和VC的设计明显不同。...下一篇 VC和GCC成员函数指针实现的研究(二)

81230

java内部类 java内部类作用

1) 成员部类 成员部类可以看成是外部类的一个成员,在成员部类中无法声明静态成员,但staticfinal字段是个例外。...我们知道加载类时,会先初始化静态成员,如果成员部类有静态成员,那么内部类就会在外部类之前生成,而内部类是为外部类服务的,内部类在外部类之前就生成可能会脱离掌控。...在实例化成员部类时,成员部类会持有一个外部类当前对象的引用,这样在成员部类中就可以直接访问外部类成员,即使是private修饰的。 ?...2) 局部内部类 局部内部类的使用和成员部类的使用基本一致,只是局部内部类定义在外部类的方法中,就像局部变量一样,并不是外部类成员。...3、匿名内部类成员部类、局部内部类一样,也不能声明静态成员。 ?

2.8K20

部类

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

22420
领券