Java中什么是嵌套类? 20
9个回答
展开全部
静态内部类(也称:嵌套类)
如果你不需要内部类对象与其外围类对象之间有联系,那你可以将内部类声明为static。这通常称为嵌套类(nested class)。想要理解static应用于内部类时的含义,你就必须记住,普通的内部类对象隐含地保存了一个引用,指向创建它的外围类对象。然而,当内部类是static的时,就不是这样了。嵌套类意味着:
1. 要创建嵌套类的对象,并不需要其外围类的对象。
2. 不能从嵌套类的对象中访问非静态的外围类对象。
1)事实上,与前相同,静态内部类也就类似一个类的静态成员方法,它不需要外部类的对象而直接由外部类创建。
2)类似一个类的静态成员方法,它只能访问外部类的静态成员,而不能访问非静态成员。
3)静态内部类中可以定义静态成员,当然也可以定义非静态成员。而其它的内部类都不能定义静态成员。
4)在类外部生成一个静态内部类也和在类外部调用静态方法一样,直接用外部类名创建,如下例:
Outer.Inner in = new Outer.Inner();
如果你不需要内部类对象与其外围类对象之间有联系,那你可以将内部类声明为static。这通常称为嵌套类(nested class)。想要理解static应用于内部类时的含义,你就必须记住,普通的内部类对象隐含地保存了一个引用,指向创建它的外围类对象。然而,当内部类是static的时,就不是这样了。嵌套类意味着:
1. 要创建嵌套类的对象,并不需要其外围类的对象。
2. 不能从嵌套类的对象中访问非静态的外围类对象。
1)事实上,与前相同,静态内部类也就类似一个类的静态成员方法,它不需要外部类的对象而直接由外部类创建。
2)类似一个类的静态成员方法,它只能访问外部类的静态成员,而不能访问非静态成员。
3)静态内部类中可以定义静态成员,当然也可以定义非静态成员。而其它的内部类都不能定义静态成员。
4)在类外部生成一个静态内部类也和在类外部调用静态方法一样,直接用外部类名创建,如下例:
Outer.Inner in = new Outer.Inner();
展开全部
【概念】
定义在一个类内部的类,叫作“嵌套类”。嵌套类分为两种:static的和非static的。后者又有一个专门的名字,叫作“内部类”。所以从概念可以看出,嵌套类跟内部类是所属关系,后者包含于前者。示例代码如下:
class OuterClass {
...
static class StaticNestedClass {
...
}
class InnerClass {
...
}
}
同时,嵌套类是其所在类的成员。内部类可以访问所在类的所有成员,即使该成员是private的。而static嵌套类则不得访问所在类的成员。同时,嵌套类,static和非static的,都可以被声明为private、public、protected和default的。
【为什么要使用嵌套类】
好处应该都比较文本化吧,以后在使用的过程中去理解和体会吧:对只在一个地方使用的类进行逻辑上的分组;增加了封装性;易于阅读和维护。
【static嵌套类】
因为static嵌套类不能直接访问所在类的非static成员变量和方法,所以static嵌套类必须通过绑定所在类的实例来进行访问。而对于所在类的静态成员和方法包括private、protected和public的,可以访问。因为它也有static修饰。
static嵌套类通过写出封装的类名来进行实例化和访问其内部成员:
OuterClass.StaticNestedClass nestedObject =
new OuterClass.StaticNestedClass();
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
内部类,即在一个类中定义另一个类。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
嵌套类包括内部类、匿名内部类等
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
class Out {
class Inner {
method(){}
}
public static void main(String[] args) {
Out.Inner in = new Out.Inner();
in.method();
}
}
class Inner {
method(){}
}
public static void main(String[] args) {
Out.Inner in = new Out.Inner();
in.method();
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询