黑马程序员技术交流社区
标题:
内部类
[打印本页]
作者:
余善航
时间:
2013-1-17 14:19
标题:
内部类
class Outer{
class Inner{
void show(){
System.out.println("Inner show");
}
}
static void method(){
Inner s=new Inner(); // 这为什么不能创建内部类的对象
s.show();
}
}
public class aa {
public static void main(String[] args) {
Outer c=new Outer();
c.method();
}
}
/*
随着类的加载,method()方法就存在了,在主函数中也创建外部类的对象 ,
外部类调用静态method(),
在method()中 为什么不能创建内部类的对象
访问内部类非静态方法需要创建内部类的对象,
创建内部类的对象前,必须先加载外部类
而在主函数中也创建了外部类的对象,
听完视频没懂
*/
作者:
希望的曙光
时间:
2013-1-17 14:27
静态方法,只能调用静态类
作者:
王溢君
时间:
2013-1-17 14:29
创建内部类对象。Outer.Inner i =new Outer().new Inner();写法为:外部类.内部:。
视频一遍没看懂,建议多看几遍,自己动手运行改进,再调试。把没明白的地方弄明白。
作者:
王溢君
时间:
2013-1-17 14:30
纯手机手写,累啊
作者:
张敬培
时间:
2013-1-17 16:54
在内部类中,内部类能调用外部类的所有属性和方法,但是外部类想要调用内部类的属性和方法,就只能通过创建内部类的对象。
静态的方法只能调用静态的属性和方法,当内部类的属性为非静态时,外部类中的静态方法,无法为非静态的内部类创建对象。
下面是我学内部类时,写的一段代码,觉得写的听清楚的
class Outer {
private int a=10;
public void outer1() {
//创建内部类的对象
Inner nb = new Inner();
//调用没不累的方法
nb.inner();
}
private static void outer2() {
System.out.println("你好");
}
private class Inner {
public int b = 14;//无法定义静态的属性和方法
public void inner() {
System.out.println(a);//外部类的属性
System.out.println(b);
outer2();//可以调用外部类的所有方法方法
}
}
}
public class Test{
public static void main(String[] args) {
Outer no = new Outer();
no.outer1();
}
}
复制代码
作者:
高浩
时间:
2013-1-18 14:25
你的method方法被静态修饰后出现了局限性,值能访问静态的成员。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2