A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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("天天向上");
        }
       
       
}

10 个回复

倒序浏览
你写的 i.method(); 中的 i 是内部类的对象 , 而method () 是属于外剖类的方法 , 当然不能调用啦
回复 使用道具 举报
默默的看一眼
回复 使用道具 举报
wanglv110 发表于 2016-7-21 23:21
你写的 i.method(); 中的 i 是内部类的对象 , 而method () 是属于外剖类的方法 , 当然不能调用啦 ...

不是说    内部类可以直接访问外部类(包括私有)
回复 使用道具 举报
Petter 发表于 2016-7-21 23:53
不是说    内部类可以直接访问外部类(包括私有)

你的理解有误,内部类之所以可以访问外部类成员,是因为有内部类持有了外部类的引用,即外部类名.this,而你在主方法里创建了内部类对象,是无法调用外部类方法的
回复 使用道具 举报
默默的顶贴
回复 使用道具 举报
怡蓝 中级黑马 2016-7-22 01:14:33
7#
好复杂,好复杂啊,好复杂啊啊啊
回复 使用道具 举报
前排观摩大神
回复 使用道具 举报
Petter 中级黑马 2016-7-22 22:21:18
9#
wanglv110 发表于 2016-7-22 00:43
你的理解有误,内部类之所以可以访问外部类成员,是因为有内部类持有了外部类的引用,即外部类名.this, ...

哦 ,             3q
回复 使用道具 举报
看看看,长知识
回复 使用道具 举报
涨姿势了,原来内部类的对象只能调用内部类的方法,而不能调用外部类的方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马