内部类之间的 创建问题

问题描述

class ca{ private ca(){ System.out.println("1"); } class inner{ private inner(){ new ca(); } } class inner2{ public inner2(){ new inner(); // 可以 } }}public class ae{ public ae(){ new ca() // 不可以 System.out.println("2"); } }问题:为什么 内部类可以 调用 其他内部类的构造器,而非内部类 就不能调用另外一个非内部类的构造器PS: 本人刚看 《Thinking in java》,里面好像有说道 构造器可以看成静态方法的说法,内部类可以共享外部类的Private域,但是这个构造器看不懂了,求教。 问题补充:kidding87 写道

解决方案

public class ae{ public ae(){ new ca() // 不可以 System.out.println("2"); } 1.内部类默认有一个指向外部内的引用。外部类没有指向内部类的引用。2.像上面这种代码在显示中也不存在任何意义。编译器就不让内部类创建外部类的对象,可以在外部类中申明一个成员变量为外部类对象,供内部类引用。
解决方案二:
1、ca这个类虽然定义在ae这个类的文件中,但是ca不是ae的内部类,ae也不是ca的内部类,他俩基本上没啥关系,除了在一个包内之外;2、不能再ae的构造器中访问ca的构造器,有以下几个原因; 1、ca这个类只提供了一个构造器; 2、这个构造器还是私有的。3、LZ你 new ca()语句少写了一个“;”基于以上分析:LZ的这个例子跟内部类关系不大。如何修正呢:1、为ca提供公开的构造器;2、把那个“该死的”“;”补上。建议LZ把上面的代码拷到Eclipse尝试编译一下,相信会容易明白很多。
解决方案三:
哦,看错字符了。你的类名启的真奇葩啊,首字母要大写Ca 的构造方法是私有的啊,只有内部可以访问,它之外的对象都不能访问先不看构造方法了,就单看一般的方法public class A{ private void privatehHllo(){ //sysout } public void publicHello(){ hello(); }}public class B{ public static void main(String args[]){ A a = new A(); //a.privatehHllo() 不可以调用 //a.publicHello() 可以调用 } }
解决方案四:
你看你第二个,要是能构造,这就是个死循环。

时间: 2024-10-04 00:29:11

内部类之间的 创建问题的相关文章

Java内部类之间的闭包和回调详解_java

前言 闭包(closure)是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域.通过这个定义,可以看出内部类是面向对象的闭包,因为它不仅包含外围类对象(创建内部类的作用域)的信息,还自动拥有一个指向此外围类对象的引用,在此作用城内,内部类有权操作所有的成员,包括private成员. Java最引人争议的问题之一就是,人们认为Java应该包含某种类似指针的机制,以允许回调(callback).通过回调,对象能够携带一些信息,这些信息允许它在稍后的某个时刻调用初始的对象.如果回调是通

内部类对象创建是否依赖外围类对象的创建

问题描述 今天看到<ThinkinginJava>有关于内部类对象的一些特性的总结时遇到一个问题:P205上说:创建内部类对象的时刻不依赖于外围类对象的创建.但是书上也有说内部类对象的创建必须依赖于外围类对象,在拥有外部=围类对象之前是不可以创建内部类对象的.那么,当你在创建内部类对象的时刻之前外部类对象如果没有被创建呢?这句话还成立么? 解决方案 解决方案二:看你是不是静态内部类了解决方案三:静态内部类是嵌套类,我说的是内部类.

详解Android XML中引用自定义内部类view的四个why_Android

今天碰到了在XML中应用以内部类形式定义的自定义view,结果遇到了一些坑.虽然通过看了一些前辈写的文章解决了这个问题,但是我看到的几篇都没有完整说清楚why,于是决定做这个总结. 使用自定义内部类view的规则 本文主要是总结why,所以先把XML布局文件中引用内部类的自定义view的做法摆出来,有四点: 1.自定义的类必须是静态类: 2.使用view作为XML文件中的tag,注意,v是小写字母,小写字母v,小写字母v: 3.添加class属性,注意,没有带android:命名空间的,表明该自

java基础之:详解内部类(转载)

可以将一个类的定义放在另一个类的定义内部,这就是内部类.        内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二).        第一次见面        内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类.   [java] view plain copy print? public class OuterClass {       private String name ;       private 

详解Android XML中引用自定义内部类view的四个why

今天碰到了在XML中应用以内部类形式定义的自定义view,结果遇到了一些坑.虽然通过看了一些前辈写的文章解决了这个问题,但是我看到的几篇都没有完整说清楚why,于是决定做这个总结. 使用自定义内部类view的规则 本文主要是总结why,所以先把XML布局文件中引用内部类的自定义view的做法摆出来,有四点: 1.自定义的类必须是静态类: 2.使用view作为XML文件中的tag,注意,v是小写字母,小写字母v,小写字母v: 3.添加class属性,注意,没有带android:命名空间的,表明该自

利用windows service 2003来创建多域间访问的搭建与架设(一)

实验环境: 西安凌云高科技系统集成由限公司在日常办公之中使用的域是benet.Com(一个林):由于工程部最近接到了一个项目:搭建了一个域名为"project.com"(是另一个林).然后在该域中一个共享文件夹让benet.com中的工程部的员工来访问来达到不同域中的员工互相讨论:如何让不同的域之间的工程部的员工互访?如何让不同的域来达到网络的相互信任?如何完成上面的需求?下面我们具体的来一步一步的做? 实验目的: 理解信任关系的概念: 理解跨域间访问的配置方法: 利用AGDLP规则实

创建可传递的林信任,Active Directory系列之二十

在实战详解域信任关系中,我们介绍了如何创在两个域之间创建域信任关系.实战的结果是我们在itet.com和homeway.com之间成功创建了信任关系,达到了预期目的.但我们打开域控制器上的Active Directory域和信任工具,可以从下图中发现,itet.com和homeway.com之间的信任关系是不可传递的!这个要引起我们的关注. 如果域之间的信任关系是可以传递的,那我们就可以推论只要A信任B,B信任C,那么A必然信任C.但是域信任关系如果是不可传递的,那就会导致A和C之间没有任何信任

一种基于EMF模型的在GEF中判断创建连接线有效性的方法

简介: 结合目前比较受欢迎的 EMF(Eclipse Modeling Framework)和 GEF(Graphical Editing Framework)技术,提出了一种在图形化开发中创建连接线时普遍适用的验证方法. 最后给出了一个创建 连接线时动态 Schema 验证的例子,并根据 Schema 的定义列出创建连接线的真值表.针对该真值表的每 项进行验证,保证不符合 Schema 定义规则的模型对应的图形之间不能创建连接线,降低了 Schema 验证 和修改的复杂性. 一种基于 EMF

怎样在不同网络安全需求下创建DMZ区

安全区的定义在建立安全网络过程中起着至关重要的作用.DMZ (Demilitarized Zone)是网络安全中最重要的分区术语.因为DMZ包含设备性质,所以将其同网络的其他部分分隔开来.这些设备通常是需要从公共网络上访问的服务器,不允许在它们所在的区域实现太严格的安全策略,因而需要分离开来. DMZ通常是驻留于专用网络和公共网络之间的一个子网,从公共网络的连接到DMZ设备终止:这些服务器也经常被相对安全的专用网络设备访问. 创建DMZ的方法有很多,怎样创建DMZ有赖于网络的安全需求,创建DMZ