问题描述
private的属性或方法含义明确,即不能在类外部引用。private的类什么意思呢?显然像上面那样理解是大大咧咧的。下面代码源自Java编程思想,注释掉的是编译错误的。明白的同学给讲解下。publicclassTest{publicstaticvoidmain(String[]args){Aa=newA();//A.Bb=a.getB();//a.getB().f();a.receiveB(a.getB());A.BImplbImpl=(A.BImpl)a.getB();print(""+(a.getB()instanceofA.BImpl));}privatestaticvoidprint(Stringmsg){System.out.println(msg);}}classA{privateinterfaceB{voidf();}publicclassBImplimplementsB{publicvoidf(){}}publicBgetB(){returnnewBImpl();}publicvoidreceiveB(Bb){}}
解决方案
本帖最后由 jiangh33 于 2014-08-03 18:31:48 编辑
解决方案二:
private定义的类或接口不能直接new
解决方案三:
当一个内部类使用了private修饰后,只能在该类的外部类内部使用。
解决方案四:
外部不能使用,但是这样的类一般无多大意义
解决方案五:
与其它属性是一样的,private修饰的类在外部不能访问,只能被该类访问。所以你在Test这个类去访问A.Bb=a.getB();会出错
解决方案六:
百度一下有关内部类的东东你就懂了
解决方案七:
类的访问修饰符,网上很多看看。
解决方案八:
private类,我第一反应就是单例,写单例的时候会用,其他的时候我没怎么用过。privateinterface木有见过。
解决方案九:
而且我记得interface只能public和default吧
解决方案十:
私有类一般是内部类,不允许在外部创建该类对象publicclassTest{publicstaticvoidmain(String[]args){newdemo().newA();//truenewdemo().newB();//false}}classdemo{publicclassA{//dosomething}privateclassB{//dosomething}}
解决方案十一:
首先,我刚学java,我理解的类是public或者默认的:public类可以被其他包使用,而默认的只能在自己包里使用。其次,好像有private类,是实现内部类的,具体还没学到。
解决方案十二:
内部类也是类成员,设置为private就不能被外部访问.
解决方案十三:
你可以把他当成一个私有属性看待,这样比较容易理解,即只能在类内部访问。
解决方案十四:
你既然知道”private的属性或方法含义明确,即不能在类外部引用“为什么还A.B呢??所以这个与你说的自相矛盾,既然B被private修饰所以A.B编译报错
解决方案十五:
类内部的类,我是这么理解的。
解决方案:
packageest.net;publicclassTest5{publicstaticvoidmain(String[]args){Aa=newA();A.Bb=a.getB();a.getB().f();a.receiveB(a.getB());A.Bb=a.newBImpl();A.BImplbImpl=a.newBImpl();bImpl.f();print(""+(a.getB()instanceofA.BImpl));}privatestaticvoidprint(Stringmsg){System.out.println(msg);}}classA{privateinterfaceB{voidf();}publicclassBImplimplementsB{publicvoidf(){System.out.println("hello");}}publicBgetB(){returnnewBImpl();}publicvoidreceiveB(Bb){b.f();}}B是私有的不能再类外引用;
解决方案:
private类的含义是使类拥有一个类成员变量,which能拥有类的一些feature。我想了个使用情况,工作中我从没这样使用过,但我觉得这样写还可以,你只看看就可以了。publicclassA{privateinterfaceI{voiddosth();}privateclassBimplementsI{publicvoiddosth(){}}privateclassCimplementsI{publicvoiddosth(){}}privateclassDimplementsI{publicvoiddosth(){}}publicstaticvoidoutwardInterface(inttype){Ii=null;switch(type){case0:i=newA().newB();case1:i=newA().newC();case2:i=newA().newD();default:i=newA().newB();}i.dosth();}}