黑马程序员技术交流社区
标题:
为什么 new d.Inner(); 是错误的
[打印本页]
作者:
高鑫
时间:
2012-5-12 17:48
标题:
为什么 new d.Inner(); 是错误的
class Demo
{
public void func()
{
new Inner();
}
class Inner{}
public static void main(String[] args)
{
Demo d=new Demo();
new d.Inner();
}
}
复制代码
这段代码中为什么 new d.Inner(); 是错误的,正确的建立内部类的方式应该怎么写
作者:
张小锋
时间:
2012-5-12 18:23
我来分析一下吧:
new d.Inner();
d是个对象,而Inner是个类
你肯定不能说某个类是属于某一个对象的,只能说某个对象是某个某个类的
再打个比方说说吧:
你是一个对象吧,你有一个宠物,它也是一个对象吧,那么你就不能说你有一个宠物类,或者说你的那个宠物是属于人类的。是不是?
正确的方式:
Demo.Inner ii=d.new Inner();
表示的就是某个对象的对象(相当于你的宠物,,连个对象吧), 所以创建一个宠物(内部类)对象时,就要实例化两个对象,一个是宠物的主人,一个是宠物,
不知道我说的够不够明白
作者:
黑马张立国
时间:
2012-5-12 18:29
毕老师的标准格式:
外部类名.内部类名 变量名= 外部对象.内部对象
Out.Inner x= new Out().new Inner();
作者:
蒙武辉
时间:
2012-5-12 18:30
class Demo
{
public void func()
{
new Inner();
}
class Inner{}
public static void main(String[] args)
{
Demo d=new Demo();
// new d.Inner();
Demo.Inner in=d.new Inner();
}
}
作者:
魏涞
时间:
2012-5-12 18:37
class Demo
{
public void func()
{
new Inner();
}
class Inner{}
public static void main(String[] args)
{
Demo d=new Demo();
//这里要创建内部类对象,可以使用Demo.Inner d=new Demo().new Inner();
new d.Inner();
}
}
作者:
余耀明
时间:
2012-5-12 18:48
1、内部类可以直接访问外部类中的成员,包括私有;
2、外部类要访问内部类必须建立内部类对象。
class Demo
{
public void func()
{
new Inner();
}
static class Inner{} //此内部类必须是静态的!
public static void main(String[] args)
{
// Demo d=new Demo(); //可以省略
new Demo.Inner(); //new Inner();//也能编译通过!!
}
}
复制代码
作者:
张成龙
时间:
2012-5-12 20:39
成员内部类可以访问外部类的静态与非静态的方法与成员变量。生成成员内部类对象的方式为: :OuterClass.InnerClass inner = new OuterClass().new InnerClass();
静态内部类:只能访问外部类的静态成员变量与静态方法,生成静态内部类对象的方式为: 例如 :OuterClass.InnerClass inner = new OuterClass.InnerClass();
局部内部类:定义在方法当中,只能访问方法中声明的final 类型的变量。生成成员内部类对象的方式是 先new出外部类的对象然后在调用内部类所在外部类的那个方法;
作者:
黑马张立国
时间:
2012-5-13 12:54
林康 发表于 2012-5-12 18:33
哥们,只是基础教程第几天的课程.
能帮忙找找么,我好像漏了这一段,一点印象都没有了0.0 ...
黑马程序员毕向东Java基础视频教程-day09-01-面向对象(内部类访问规则)
黑马程序员毕向东Java基础视频教程-day09-02-面向对象(静态内部类)
黑马程序员毕向东Java基础视频教程-day09-03-面向对象(内部类定义原则)
黑马程序员毕向东Java基础视频教程-day09-04-面向对象(匿名内部类)
哦了
作者:
黑马张立国
时间:
2012-5-13 13:03
林康 发表于 2012-5-12 18:33
哥们,只是基础教程第几天的课程.
能帮忙找找么,我好像漏了这一段,一点印象都没有了0.0 ...
黑马程序员毕向东Java基础视频教程-day09-01-面向对象(内部类访问规则)
黑马程序员毕向东Java基础视频教程-day09-02-面向对象(静态内部类)
黑马程序员毕向东Java基础视频教程-day09-03-面向对象(内部类定义原则)
黑马程序员毕向东Java基础视频教程-day09-04-面向对象(匿名内部类)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2