JAVA编程之道
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
<
2012年11月
>
日
一
二
三
四
五
六
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
留言簿
给我留言
查看公开留言
查看私人留言
文章分类
DataBase
(rss)
J2EE
(rss)
JAVA
(rss)
SCJP(1)
(rss)
SWT/JFace(1)
(rss)
文章档案
2007年6月 (1)
2007年5月 (1)
最新随笔
1. SWT/JFACE学习一
2. JAVA内部类的访问
最新评论
1. re: JAVA内部类的访问[未登录]
public C inner_method(int w) {
...
}中的return不需要么?
--kkk
JAVA内部类的访问
由于内部类定义在封装类的内部,所以内部类可以在封装类的内部进行访问,也可以在封装类外部进行访问。
1
//
Class A为外部类(封装类)B为非静态内部类
2
public
class
A
{
3
private
int
a
=
0
;
4
protected
int
b
=
0
;
5
private
void
outer_method()
{
6
System.out.println(
"
inner class can access all of the outer member
"
);
7
}
8
private
void
testInner()
{
//
该方法用于直接访问内部类
9
B b
=
new
B();
10
b.execute();
11
}
12
class
B
{
//
内部类的声明
13
public
int
c
=
0
;
//
内部类成员变量
14
public
void
execute()
{
15
a
=
10
;
16
b
=
9
;
17
outer_method();
//
访问外部类私有方法
18
System.out.println(
"
a=
"
+
a
+
"
;
"
+
"
b=
"
+
b);
19
}
20
}
21
public
static
void
main(String[] args)
{
22
A a
=
new
A();
23
a.testInner();
24
}
25
}
26
该例说明以下:
※外部成员变量的作用域是整个外部类,包括内部类,外部类不能访问内部类固有成员
※内部类拥有对外部类所有成员访问权限
※外部类是不可以使用static方法来进行内部类实例话的。
※成员位置的非静态内部类里面是不能用static修饰符的
1
//
A.java
2
public
class
A
{
3
private
int
a
=
0
;
4
protected
int
b
=
0
;
5
public
C inner_method(
int
w)
{
6
int
m;
7
final
int
n
=
0
;
8
class
B
implements
C
{
//
方法中的内部类
9
public
int
c
=
0
;
10
public
void
execute()
{
11
a
=
10
;
//
访问成员变量
12
System.out.println(
"
this is inner class
"
);
13
}
14
}
15
}
16
public
static
void
main(String[] args)
{
17
A a
=
new
A();
18
C b
=
a.inner_method(
3
);
19
b.execute();
20
}
21
}
22
inte
***
ce C
{
public
void
execute();}
23
从以上可以看出:
※方法中的内部类对于方法是私有的,所以不能被任何访问控制修饰符修饰,如public
※方法内部是不能有static修饰符,除非该方法为static
※内部类只能访问外部类的所有成员,对于声明内部类的方法中方法参数和方法中的局部变量(如m),内部类是不能访问的;但如果局部变量被final修饰,如n,内部类可以访问,由于final型的变量属于特殊变量,它的生命周期比方法要长,只有当实例对象没有被引用时,且被系统回收后,变量的生命周期才算结束。
※由于内部类的类名只能使用在方法内部,所以该方法的返回类型也是不能使用该内部类的类名。如果这样的话,如何访问内部类呢?解决的方法是通过多态的技术。如果该内部类继承了一个已知的类或抽象类或者实现一个接口,就可以将内部类的返回类型写成父类的类型了。
posted on 2007-05-27 03:19
专心做技术
阅读(393)
评论(1)
编辑
收藏
所属分类:
SCJP
评论
#
re: JAVA内部类的访问[未登录]
2012-11-07 11:55
kkk
public C inner_method(int w) {
...
}中的return不需要么?
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
Powered by:
BlogJava
Copyright © 专心做技术