黑马程序员技术交流社区

标题: 大神,请问此处为什么运行错误? i.method() [打印本页]

作者: Petter    时间: 2016-7-21 22:41
标题: 大神,请问此处为什么运行错误? i.method()
package cn.itcast_03;
//内部类被 static 修饰


public class Demo {
        public static void main(String[] args) {
//                静态修饰的内部类成员的访问格式
                Outer.Inner i = new Outer.Inner();
                i.show();
//              i.method();            此处为什么运行错误?
                Outer.method();
                 
        }

}

//外部类
class Outer {
//        成员变量必须用静态修饰,因为内部类是静态类,静态只能访问静态;
        public static int num =2;
//        内部类被static修饰   
        public static class Inner {
//                静态内部类方法可以是静态,也可以是非静态
                public void show () {
                        System.out.println(num);
                }
        }       
//        成员方法必须是静态类型,才能被内部类访问到
        public static void method () {
                System.out.println("天天向上");
        }
       
       
}

作者: wanglv110    时间: 2016-7-21 23:21
你写的 i.method(); 中的 i 是内部类的对象 , 而method () 是属于外剖类的方法 , 当然不能调用啦
作者: 李铮    时间: 2016-7-21 23:39
默默的看一眼
作者: Petter    时间: 2016-7-21 23:53
wanglv110 发表于 2016-7-21 23:21
你写的 i.method(); 中的 i 是内部类的对象 , 而method () 是属于外剖类的方法 , 当然不能调用啦 ...

不是说    内部类可以直接访问外部类(包括私有)

作者: wanglv110    时间: 2016-7-22 00:43
Petter 发表于 2016-7-21 23:53
不是说    内部类可以直接访问外部类(包括私有)

你的理解有误,内部类之所以可以访问外部类成员,是因为有内部类持有了外部类的引用,即外部类名.this,而你在主方法里创建了内部类对象,是无法调用外部类方法的
作者: 自娱自乐的朋朋    时间: 2016-7-22 00:47
默默的顶贴
作者: 怡蓝    时间: 2016-7-22 01:14
好复杂,好复杂啊,好复杂啊啊啊
作者: 雷雨天    时间: 2016-7-22 11:11
前排观摩大神
作者: Petter    时间: 2016-7-22 22:21
wanglv110 发表于 2016-7-22 00:43
你的理解有误,内部类之所以可以访问外部类成员,是因为有内部类持有了外部类的引用,即外部类名.this, ...

哦 ,             3q
作者: 小福点儿    时间: 2016-7-22 22:44
看看看,长知识
作者: qetu001212    时间: 2016-7-22 22:52
涨姿势了,原来内部类的对象只能调用内部类的方法,而不能调用外部类的方法。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2