使用内部类可以方便的访问外部内私有成员(属性,方法),但是会使得代码变得非常的混乱。
内部了跌实例化方法:
1.在外部内中使用一个方法放回内部类的一个实例,在主方法中实例化内部类的时候,是有实例化外部类,在用外部类.方法,得到内部类的一个实例。
2.先实例化外部类,再通过外部类.内部类实例化内部类
3.使用static关键字声明的内部类,则此内就将成为外部内类,可以直接通过外部类.内部类访问.
4.在方法中定义的内部类,可以直接访问外部类中的各个成员,但是如果要访问方法中的参数,则参数上要使用final关键字声明。
内部了跌实例化方法:
1.在外部内中使用一个方法放回内部类的一个实例,在主方法中实例化内部类的时候,是有实例化外部类,在用外部类.方法,得到内部类的一个实例。
package test;
public class OuterDemo01 {
private int age=23;
class Inner{
public void printAge(){
System.out.println(age);
}
}
public Inner getInner(){
return new Inner();
}
public static void main(String[] args){
OuterDemo01 out=new OuterDemo01();
Inner in=out.getInner();
in.printAge();
}
}
2.先实例化外部类,再通过外部类.内部类实例化内部类
package test;
public class OuterDemo02 {
private int age=23;
class InnerDemo02{
public void printAge(){
System.out.println(age);
}
}
public static void main(String[] args){
OuterDemo02 out=new OuterDemo02();
OuterDemo02.InnerDemo02 in=out.new InnerDemo02();
in.printAge();
}
}
3.使用static关键字声明的内部类,则此内就将成为外部内类,可以直接通过外部类.内部类访问.
package test;
public class OuterDemo03 {
private static int age=23;
static class InnerDemo03{
public void printAge(){
System.out.println(age);
}
}
public static void main(String[] args){
OuterDemo03 out=new OuterDemo03();
OuterDemo03.InnerDemo03 in=new OuterDemo03.InnerDemo03();
in.printAge();
}
}
4.在方法中定义的内部类,可以直接访问外部类中的各个成员,但是如果要访问方法中的参数,则参数上要使用final关键字声明。
package test;
public class OuterDemo04 {
private int age = 23;
public void fun() {
class InnerDemo04 {
public void printAge() {
System.out.println(age);
}
}
new InnerDemo04().printAge();
}
public static void main(String[] args) {
new OuterDemo04().fun();
}
}
package test;
public class OuterDemo05 {
private int age = 23;
public void fun(final int temp) {
class InnerDemo04 {
public void printAge() {
System.out.println(temp);
System.out.println(age);
}
}
new InnerDemo04().printAge();
}
public static void main(String[] args) {
new OuterDemo05().fun(24);
}
}