Java的内部类是个很好玩的东东,Java不支持多重继承,所以用接口和内部类来解决了这个问题。
内部类声明比较简单,直接声明就可以了
例如:
01
public
class
A
02
{
03
public
static
void
main
(
string
args
[])
04
{
05
A
a
=
new
A
();
06
}
07
void
test
()
08
{
09
System
.
out
.
println
(
"A"
);
10
}
11
class
B
extends
A
12
{
13
void
test
()
14
{
15
System
.
out
.
println
(
"B"
);
16
}
17
}
18
}
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
很简单的一个内部类就出现了。但是我没有实例化它,因为他和外部类的实例化稍稍有点不同。
第一种在外部实例化:
20
A
.
B
ob
=
new
A
.
B();
很简单吧,但是假如要在外部类实例话内部类的话就不同了,假如我在main函数里实例化内部类B
01
public
class
A
02
{
03
public
static
void
main
(
string
args
[])
04
{
05
A
a
=
new
A
();
06
B b
=
getobject
();
07
}
08
void
test
()
09
{
10
System
.
out
.
println
(
"A"
);
11
}
12
public
B
getobject
()
13
{
14
return
new
B();
15
}
16
class
B
extends
A
17
{
18
void
test
()
19
{
20
A
.
this
.
test
();
21
System
.
out
.
println
(
"B"
);
22
}
23
}
24
}
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
好这里你看,多了一个getobject的方法,要通过这个方法来实例化B才不会有错,顺便为了少写两行,我也把如何在内部类里调用外部类函数写了哦。。就是
20
A
.
this
.
test
();
好了。。大致了解就这些。。先写到这。。第一次写blog还是要忙着复习考试~~
最近rp不好。。顺便求下~~
好吧,再补充些东西:
我刚才说了是在main方法里实例化内部类,那么在其他方法里呢?
01
public
class
Test
{
02
03
class
Content
{
04
private
int
i
=
1
;
05
public
int
value
()
06
{
07
return
i
;
08
}
09
}
10
public
void
ship
(
String
dest
)
11
{
12
Content
t
=
new
Content
();
13
}
14
public
static
void
main
(
String
[]
args
)
15
{
16
//Content t = new Content(); //ERROR
17
}
18
19
}
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
看吧,在其他方法里,可以直接这样实例化的,同样是方法为什么在main里面不行?
这样解释吧,main方法是游离在所有类外面的,对于内部类他是不可见的,所以要在main里面实例化只能按照前面的方法了。
那是不是就不能在main函数里直接实例化呢?
不是哦,有一个办法!------静态内部类!
代码如下:
01
public
class
Test
{
02
03
static
class
Content
{
04
private
int
i
=
1
;
05
public
int
value
()
06
{
07
return
i
;
08
}
09
}
10
public
void
ship
(
String
dest
)
11
{
12
Content
t
=
new
Content
();
13
}
14
public
static
void
main
(
String
[]
args
)
15
{
16
Content
t
=
new
Content
();
//ERROR
17
}
18
19
}
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
我把内部类声明为静态的,就可以了。
内部类其他方法等下次再写。