package org.innerdemo;
class Outer{
private String name = "hello would";
class Inner{
public void print(){
System.out.println(name);
}
}
public void fun(){
new Inner().print();
}
}
public class InnerDemo01 {
public static void main(String args[]){
Outer out = new Outer();
out.fun();
}
}
package org.innerdemo;
class Outer{
private String name = "hello would";
public void fun(){
new Inner(this).print();
}
public String getName(){
return this.name;
}
}
class Inner{
private Outer out = null;
public Inner(Outer out){
this.out = out;
}
public void print(){
System.out.println(this.out.getName());
}
}
public class InnerDemo01 {
public static void main(String args[]){
Outer out = new Outer();
out.fun();
}
}
内部类的唯一优点:在于可以方便的访问外部类中的私有成员
package org.innerdemo;
class Outer{
private String name = "hello would";
class Inner{
public void print(){
System.out.println(name);
}
}
}
public class InnerDemo01 {
public static void main(String args[]){
Outer out = new Outer();
Outer.Inner in = out.new Inner();
in.print();
}
}
package org.innerdemo;
class Outer{
private static String name = "hello would";
static class Inner{
public void print(){
System.out.println(name);
}
}
}
public class InnerDemo01 {
public static void main(String args[]){
Outer.Inner in = new Outer.Inner();
in.print();
}
}
一个内部类如果使用 static 关键字声明的话,则此内部类就将成为外部类,可以直接通过外部类.内部类的形式访问
package org.innerdemo;
class Outer{
private String name = "hello would";
public void fun(){
class Inner{
public void print(){
System.out.println(name);
}
}
new Inner().print();
}
}
public class InnerDemo01 {
public static void main(String args[]){
Outer out = new Outer();
out.fun();
}
}
在方法中定义的内部类,可以直接访问外部类中的各个成员,但是如果要访问方法中的参数,则在参数上要使用final 关键字声明
package org.innerdemo;
class Outer{
private String name = "hello would";
public void fun(final int temp){
class Inner{
public void print(){
System.out.println(temp);
}
}
new Inner().print();
}
}
public class InnerDemo01 {
public static void main(String args[]){
Outer out = new Outer();
out.fun(30);
}
}