关于内部类其他系列(目前没更完)
静态内部类
内部类我推荐大概了解,因为真正的重点不是内部类,我写这些只是为了更好理解
说实话,Java内部类我是理解了很久(2-3天吧),因为经常搞混,又特无语
以下总结是为了更好的理解,首先来成员内部类吧
有两种命名时期的格式(如何用在下面的 访问成员内部类的访问格式 中介绍)
在其他类中创建成员内部类对象外部类.内部类 XXX=new 外部类().new 内部类(); //定义一
外部类.内部类 XXX=外部类.new 内部类(); //定义二
在外部类中创建成员内部类类对象
class Wai{ //创建外部类
class Nei{} //创建内部类
void fan(){ //在外部类创建内部类对象,方便引用
内部类 XXX=new 内部类();
}
}
成员内部类的使用
不能再成员内部类中创建:static的方法和static成员class Wai{ //创建外部类
class Nei{ //创建内部类
static void no1(){} //在成员内部类中不能创建
static int no2=10; //在成员内部类中不能创建
static final void no1(){} //在成员内部类中不能创建
static final int no2=10; //在成员内部类中不能创建
}
}
可以直接引用外部类的所有方法和变量
class Wai{ //创建外部类
static void yes1(){} //内部成员可以引用
static int yes2=20; //内部成员可以引用
void yes3(){} //内部成员可以引用
static int yes4=40; //内部成员可以引用
class Nei{ //创建内部类
}
}
成员内部类的访问格式
1. 内部类访问外部类
通过:外部类类名+this+成员/变量(这样使用格式不会混乱) 外部类成员的静态成员,可以直接通过外部类类名引用
class Wai{ //创建外部类
//外部类静态成员
static void yes1(){}
static int yes2=20;
//外部类实例成员
void yes3(){}
static int yes4=40;
class Nei{ //创建内部类
//引用外部类成员
Wai.this.yes1();
int yin2=Wai.this.yes2;
Wai.this.yes3();
int yin4=Wai.this.yes4;
//外部类静态成员可以直接通过类名引用
Wai.yes1();
int yin5=Wai.yes2;
}
}
2. 外部类访问内部类
可以访问内部类的私有成员和方法(这点很无语,因为这点我也纳闷了很久) 步骤
1.通过在外部类中建立方法
2.在外部类方法中创建内部类对象
class Wai{ //创建外部类
class Nei{ //创建内部类
int nei1=10;
void nei2(){}
private int nei3=30;
}
//建立引用内部类的方法
void NeiDui(){
//创建内部类对象
Nei dui1=new Nei();
int dui1_1= dui1.nei1;
dui1.nei2();
//可以访问内部类的私有成员和方法
int dui1_2= dui1.nei3;
}
}
3. 其他类访问内部类
1.创建成员内部类对象(成员内部类必须不是私有类型=private)
class Wai{
class Nei{ //创造成员内部类
int nei1=10;
}
}
class Qi{
public static void main(String[] args){
//其他类访问内部类创建对象一
Wai.Nei jian1=new Wai().new Nei();
int jianInt1=jian1.nei1; //对内部类成员进行应用
//其他类访问内部类创建对象二
Wai.Nei jian2=Wai.new Nei();
int jianInt2=jian1.nei1; //对内部类成员进行应用
}
}
2.创建外部类对象,通过外部类中访问内部类的方法进行访问
class Wai{
class Nei{ //创造成员内部类
int nei1=10;
}
void NeiDui(){ //创建引用内部类的方法
Nei dui1=new Nei(); //创造内部类对象
int dui1_1= dui1.nei1; //引用内部类成员
}
}
class Qi{
public static void main(String[] args){
Wai jian1=new Wai();//创建外部类成员
jian1.NeiDui(); //通过引用外部类方法进行引用
}
}
如果有不对的地方,麻烦各位大佬指出来
我这个小菜会努力学习的