这里为什么报错了啊
你现在是什么内部类呢,静态内部类吗,把Outer和Inner的代码我看一下啊
老师,后面我发现怎么怎么错了,我不小心在Inner前面加了private,谢谢啦
好的好的
1、为什么调用外部类的变量时候需要打印?调用外部类的方法却不需要打印?
之前做练习的时候也有过这种写法,以为都可以就没在意。这里面是不是有什么规律?
没有的,我们直接调用变量是无法输出的,为了在控制台看到age的值,我们只有打印在控制台才可以看到,而调用方法,因为方法中有输出语句,所以可以直接调用方法,只要控制台输出了方法中的语句,就说明进入了方法。
应该是哪里写错了,你先看看自己能不能检查出来,要是检查不出来,你把代码发老师微信上,老师在微信上给你检查一下。
应该是哪里写错了,你先看看自己能不能检查出来,要是检查不出来,你把代码发老师微信上,老师在微信上给你检查一下。
内部类只有通过new一个对象才能访问外部类的静态方法吗?
不能直接类名.方法名来访问吗?
是这样吗
老师外部类是如何直接访问内部类的public属性?
这里为什么又说外部类不能直接访问。。。
外部类是如何直接访问内部类的public属性 new对象的时候
你new对象之后就可以对象名.方法或者属性来访问
老师我想问一下,内部类的关系表达是什么?
继承关系是is-a,组合关系是has-a。那一个外部类和一个内部类不是更像has-a吗?
有点分不清楚组合关系和内部类的差别。
内部类和外部类之间的关系像一种寄生与宿主的关系
内部类像是寄生虫,获取宿主的东西,相对方便
外部类像宿主,不能随便获取到寄生虫的东西
老师这个是啥意思,感觉没读懂两句话,下面说外部类不能访问内部类的的内部属性,而上面又说内部类可以让外部类直接访问这两句话是不是有点毛病?
这里说的内部属性是私有属性的意思,外部类不可以直接访问内部类的私有属性,即用了private修饰符的
public class Face { private String shope = "国字脸"; // 内部类 class Nose{ private String shope = "高鼻梁"; public void breath(){ System.out.println("鼻子长在了"+Face.this.shope+"形状的脸上"); // 调用外部类的shope System.out.println("呼吸,呼吸,呼吸!"); } }
问题:可以在内部类中重新对外部类的shope重新赋值吗?如果可以应该怎么做?
public class Face { public String shope = "国字脸"; public static String aa="a"; public static void main(String[] args) { Face f=new Face(); Face.Nose fn=new Face().new Nose(); fn.change(); System.out.println(aa); } // 内部类 class Nose { private String shope = "高鼻梁"; public void breath() { System.out.println("鼻子长在了" + Face.this.shope + "形状的脸上"); // 调用外部类的shope System.out.println("呼吸,呼吸,呼吸!"); } public void change(){ aa="b"; Nose n=new Nose(); n.shope="瓜子脸"; } } }
可以看一下那个字符串aa,就是通过内部类去改了。
Face{ String =Nose{ String =String =(){ System..println(++Face..)} } Eye{ } (String[] args) { Face.Nose nose1= Face.Nose()nose1.break2()} }
为什么会在new nose1时报错,
我知道了老师...
好,注意代码的选择
new内部类时,格式为 Outer.Inner varname = new Outer().new Inner()
实测发现Outer.不加也能执行,这是什么原理?
因为你要new就是内部类的类型呀,所有Outer.可以省略
上面说能访问,下面又说不能访问,咋回事?
这个说的是外部尅访问内部的属性可以,但是访问不到内部类的内部属性,不如内部类的方法里的属性,外部类就访问不到了。
/**外部类 Outer*/ class Outer { private int age = 10; public void show(){ System. out .println(age);//10 } /**内部类 Inner*/ public class Inner { //内部类中可以声明与外部类同名的属性与方法 private int age = 20; public void show(){ System. out .println(age);//20 } } }
请问以上代码中,Outer怎么访问Inner中的age?
class Outer { public int age=10; public void aa(){ System.out.println(new Outer().new Inner().age); } public class Inner { public int age=20; public void aa(){ } } } class Test{ public static void main(String[] args) { Outer o=new Outer(); o.aa(); } }
内部类的内部属性就是指内部类的局部变量吧?
嗯嗯,对
不是说一个源文件中只能有一个public类吗?为什么内部类可以使用public修饰呢?
只能出现一个public修饰的类意思是同一个源文件中出现多个并列的类,只能有一个使用public修饰