Java外部类怎么访问内部类访问外部类变量的方法和成员呢?可以在外部类创建内部类访问外部类变量的实例化对象吗?

问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
一个外部类Outer 他有一个内部类Inner
有一个外部类对象outer,然后又new了一个内部类对象。
可以把外部类outer赋值给其它对象例如object以后,取出object这个对象里的inner对象吗?
不用static?
如果不行的话为什么?如果可行的话,需要在外部类做什么?如果可行的话,内部类的内部类的一个集合可以用同样方法取出吗?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
只能把你创建的InnerClass传递出去,不能从OuterClass直接取出InnerClass的引用InnerClass里面有OuterClass的引用,但是OuterClass没有也不能拥有InnerClass的引用,因为一个OuterClass实例可以创建多个InnerClass
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
回答一下,简要概述一下你的问题,有两种概述可能性:
如何在类外部实例化当前类的内部类?
public class Outer {
class Inner {
public static void main(String[] args) {
// 相当于外部,准备在这里实例化Inner这个内部类.
// 1. 先new出Outer这个类
Outer outerObj = new Outer();
// 2. 通过Outer类句柄new出内部类
Outer.Inner innerObj = outerObj.new Inner();
如果在外部使用类中的变量,这个变量是一个内部类对象?
答:如果这个内部类对象的访问权限对你没障碍,你就能访问。
ps:问题不要读起来像顺口溜一样,我会忍不住想笑的......
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
内部类的出现,就是解决java的多继承!!可参考android- bindservice的service里面的内部类ibind的自定义的实现体。(人在地铁刚看看到你的问题无法贴出代码解析。感兴趣回复我,我再贴出代码?)
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:java中在外部类创建对象之后如何调用内部类方法
全部答案(共2个回答)
刚才的描述不准确,应该是在外部类函数中创建内部类对象,调用内部类函数。有代码最好,谢谢了!
亲,你可以实例化对象,然后调用类方法
不需要,只有导入别的包的类是才需要声明。希望能帮助你。
“QDIM”是快捷标注。下面更详细:DLI, *DIMLINEAR(直线标注)DAL, *DIMALIGNED(对齐标注)DRA, *DIMRADIUS(半径标...
U盘插到电脑,电脑识别后会在“我的电脑”出现一个新的盘符和可移动硬盘图标,双击这个图标,就可以打开你的U盘了,你可以要把U盘里面的文件或图片拷贝到电脑上,也可以...
答: Otavalo地区哪个湖最漂亮?
答: 这个要设计到JNI的开发,就是用Java来调用C语言的函数库,还要编写缓冲器来解决传输问题,还有就是网络协议一定要了解,做的时候要用多线程来控制你所有的缓冲器,...
答: 所谓的网络编程,不论c还是java,本质上都是通过socket进行数据传输;一般情况下可以使用的传输协议有tcp、udp、ftp等等,这些协议为网络变成提供基本...
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415public class A {private static class B {private S}}
请各位列举php和java的两种语言的获取方法?
该问题被发起重新开启投票
投票剩余时间:
之前被关闭原因:
该问题被发起删除投票
投票剩余时间:
距离悬赏到期还有:
参与关闭投票者:
关闭原因:
该问题已经被锁定
锁定原因:()
保护原因:避免来自新用户不合宜或无意义的致谢、跟帖答案。
该问题已成功删除,仅对您可见,其他人不能够查看。
这种写法在PHP肯定是不允许的。
在Java里因为内部类B是private的,所以不可被其他类访问,当然不能在其他类或者外部new出来
如果一定要这么做的话,建议是在A类是提供一个访问方法用来获取B对象的实例,然后在外部调用A的getB方法来获取B的实例。
public B getB()//实例化B(B是静态的)B a = new B(); }
还有一种方法就是通过反射
Class.forName("A$B").newInstance(); 说明:A前面需要加上其包名反射方式,要求B类必须定义非private的构造函数,否则不允许访问。
我只说Java.
的回答跑题了, 直接忽略.
的回答, 有一些问题. 问题在于:A中的public B getB()方法, 返回一个A.B对象; 而A.B类 对于外部来说是不可见的. 如果我写:
public void test() {
A.B b=new A().getB();
会报编译错误, A.B不可见.
在Java中标准的做法是对B引入 一个可见的 interface接口, 从而隐藏B的具体实现类:
interface BInf{}public class A {
private static class B implements BInf{}
BInf getB() {
return new B();
}class C {
public void test() {
BInf b=new A().getB();
答案补充很容易在Java中找到这种pattern实现:
比如Arrays.asList()返回一个List(接口), 实际是内部嵌套类的一个实例.
public static &T& List&T& asList(T... a) {
return new ArrayList&T&(a);}/**
* @serial include*/private static class ArrayList&E& extends AbstractList&E&
implements RandomAccess, java.io.Serializable{...
再如Collections.singletonList(), synchronizedList(), unmodifiableSet()等.
在Java中:1. 嵌套类的对象,并不需要其外围类的对象。2. 不能从嵌套类的对象中访问非静态的外围类对象。如下所示代码为定义一个静态嵌套类:
public class StaticTest{private static String name = "woobo";private String num = "X001";static class Person{ // 静态内部类可以用public,protected,private修饰 // 静态内部类中可以定义静态或者非静态的成员
private String address = "China";Private Static String x=“as”;public String mail = ".cn";//内部类公有成员public void display(){//System.out.println(num);//不能直接访问外部类的非静态成员// 静态内部类不能访问外部类的非静态成员(包括非静态变量和非静态方法)System.out.println(name);//只能直接访问外部类的静态成员//静态内部类只能访问外部类的静态成员(包括静态变量和静态方法)System.out.println("Inner " + address);//访问本内部类成员。}}public void printInfo(){Person person = new Person();// 外部类访问内部类的非静态成员:实例化内部类即可 person.display();//System.out.println(mail);//不可访问//System.out.println(address);//不可访问System.out.println(person.address);//可以访问内部类的私有成员System.out.println(Person.x);// 外部类访问内部类的静态成员:内部类.静态成员System.out.println(person.mail);//可以访问内部类的公有成员}public static void main(String[] args){StaticTest staticTest = new StaticTest();staticTest.printInfo();}}
不是您所需,查看更多相关问题与答案
德问是一个专业的编程问答社区,请
后再提交答案
关注该问题的人
共被浏览 (7463) 次在方法中定义的内部类可以访问外部类的成员变量吗?【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:635,447贴子:
在方法中定义的内部类可以访问外部类的成员变量吗?收藏
比如这个 class Outer1 { int i = 59; void inst(final int s){
final int temp = 20;
class Inner{
void display(){
System.out.println("成绩是" + (i+s+temp));
Inner in = new Inner();
in.display(); }}
java-亚马逊819店庆,一站购全球,全品类齐放价,钜惠就在眼前!亚马逊819店庆,正品低价,送货上门,货到付款!
买了一本巨坑的书,再也不相信神马入门到精通了
方法里的内部类是局部内部类,其作用域在该方法内
如果没记错的话,内部类只能访问用final修饰的变量。
那包名构简介,还是养成良好的编程习惯吧,坏习惯养成就难改了
要看内部类是不是静态的,恩……一个要分情况讨论
成员变量?当然可以局部变量的话,需要 final
登录百度帐号推荐应用

我要回帖

更多关于 成员内部类实例化 的文章

 

随机推荐