java 内部类-在外部类中为什么可以直接访问内部类的私有成员?

问题描述

在外部类中为什么可以直接访问内部类的私有成员?

在外部类中为什么可以直接访问内部类的私有成员?比如,root=root.next,这条语句出现在外部类的方法中,这里,root是定义在外部类中的一个内部类对象,而next是root对象的一个私有属性,为什么可以这样写?

解决方案

内部类是一个特例,相当于友元类(java本身没有友元这个概念)
从语法的角度来说,这样做是方便的。封装性主要是避免调用者随意操作对象的私有成员,调用他们不知道的代码引起问题。但是你定义了外部类,显然内部类也是你定义的,你肯定对自己的代码很了解,所以这里限制反倒是多余。

解决方案二:

http://blog.csdn.net/pdcxs007/article/details/19291481

解决方案三:

外部类能访问内部类的成员
黑马程序员--------内部类和外部类
C++中巧用#define访问类的私有成员

时间: 2024-10-31 03:42:56

java 内部类-在外部类中为什么可以直接访问内部类的私有成员?的相关文章

python中的嵌套类(内部类调用外部类中的方法函数)

在为书中版本是3.X的,但2.X不太支持直接调用. 所以,在PYTHON2.X中,要在内部类中调用外部类的方法,就必须得实例化外部类,然后,传入实例进行调用. 花了我两个小时啊,资料没找到,自己一个一个想法调试,真的失败了三四十次,PRINT了N多~~~:) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 4

java内部类 引用外部类对象this问题

问题描述 java内部类 引用外部类对象this问题 在内部类里,想引用外部类的对象,为什么是外部类.this而不是外部类加引用变量,还有.操作应该是成员操作符吧,这样this不就成了外部类成员了 解决方案 你好,实际上我们代指当前类对象的this是个简写形式,完整的形式就是 类名字.this,举个例子来说吧 class OuterClass { private String outAttribute = "我是外部类属性"; public void printOutAttribute

对Java的面对对象编程中对象和引用以及内部类的理解_java

最近利用下班的时候看了看的think in java感觉再看 和第一次看大不一样 接下来说一下java中对象和引用的关系,以及内部类的概念.1.java中一切都是对象 在java中是什么来操作者对象呢?答案是引用,这就好比C或者C++中的指针. 如果用拥有一个引用,那么此时你必须让其和一个对象关联在一起,否则这个引用并不会像你想象的那样任由你的控制,例如你创建了一个String的引用: String s ; 而此时并未与任何对象关联,如果此时你去做一些操作,如调用String的一些方法,肯定是会

java 内部类-为什么外部类能访问内部类的私有成员?

问题描述 为什么外部类能访问内部类的私有成员? 在学习单例时发现,外部类可以访问内部类的私有成员 如下面代码所示: //Initialization on Demand Holder class Singleton { private Singleton() { } private static class HolderClass { private final static Singleton instance = new Singleton(); } public static Single

内部类和外部类的一个问题

问题描述 class Car{class Wheel{}}class PlaneWheel extends Car.Wheel{PlaneWheel(Car car){car.super();//这里怎么理解??}public static void main(String[] args){Car car=new Car();PlaneWheel pw=new PlaneWheel(car);}} 解决方案 也许下面代码更有说服力:引用class Car {public Car() {super

Java多继承方法(名)冲突和成员内部类、局部内部类、静态内部类、匿名内部类

Java内部类     ①内部类是在一个java类体内,再定义一个类,即外部类的内部再定义一个类(相对的).      ②内部类分为四类:          成员内部类.局部内部类.静态内部类.匿名内部类      ③内部类作为外部类的一个成员,并依附于外部类而存在.包括:成员内部类.局部内部类.匿名内部类      ④内部类可以由private.public.protected.default访问修饰符和static修饰:      ⑤而外部类,即和public类平行的,只能有default修

在Java程序中运行外部类文件

程序 在Java程序中运行外部类文件 一.引言无论是用传统的编程语言(C++.VB等)还是Java语言编程,都经常需要在一个运行的程序中执行另外一个独立的外部程序.例如用Java设计一个IDE程序,那么这个IDE程序就必需能够调式.运行其它独立的外部Java程序.况且直接运行已经存在的外部程序来实现本程序的某些特定的功能,也是提高程序开发效率的一种重要手段.Java2为实现在一个Java程序中运行外部类文件(即Java程序)提供了的两种解决方案,即在同一进程中运行外部类文件和在不同进程中运行外部

内部类引用局部变量与外部类成员变量的问题思考

昨天有一个比较爱思考的同事和我提起一个问题:为什么匿名内部类使用的局部变量和参数需要final修饰,而外部类的成员变量则不用?对这个问题我一直作为默认的语法了,木有仔细想过为什么(在分析完后有点印象在哪本书上看到过,但是就是没有找到,难道是我的幻觉?呵呵).虽然没有想过,但是还是借着之前研究过字节码的基础上,分析了一些,感觉上是找到了一些答案,分享一下:也希望有大牛给指出一些不足的地方. 假如我们有以下的代码: interface Printer {      public void print

android中泛型传入一个外部类,处理后传回原来的类,问题求解!

问题描述 android中泛型传入一个外部类,处理后传回原来的类,问题求解! 部分代码如下: 入口类定义一泛型private List itemlist; itemlist=new ArrayList(); 创建外部类对象 GetData getdata=new GetData(itemlist); getdata.returndata(): 包中的外部类 public class GetData extends Activity{ private List<Item_activity> it