Java内部类-静态内部类的总结
关于内部类其他系列(目前没更完)
静态内部类
内部类我推荐大概了解,因为真正的重点不是内部类,我写这些只是为了更好理解
前话:静态内部类其实就是成员内部类的两个儿子之一。就如全局里有静态和实例一样。成员内部类的儿子:静态内部类、实例内部类
为了更方便看懂,每个内部类都是单独单一出来的
这次我们来讲解:静态内部类
静态内部类创建对象格式
有两种命名时期的格式(如何用在下面的 访问成员内部类的访问格式 中介绍)
- 在其他类中创建成员内部类对象
外部类.内部类 XXX=new 外部类().new 内部类(); //创建格式一
外部类.内部类 XXX=new 外部类.内部类();//创建格式二
- 在外部类中创建成员内部类对象(与成员内部类一样)
class Wai{ //创建外部类
class Nei{} //创建内部类
void fan(){ //在外部类创建内部类对象,方便引用
Nei XXX=new Nei();
//格式:内部类 XXX=new 内部类();
}
}
静态内部类的使用
- 静态内部类只能直接引用外部类的staic修饰的成员/方法(可以解决引用外部类的非静态成员)
class Wai{
//静态内部类 不能 直接引用的(可以解决)
final int yes1=10;
int yes2=10;
final void yes3(){}
void yes4(){}
//静态内部类 可以 直接引用的
static final int yes1=10;
static int yes2=10;
static final void yes3(){}
static void yes4(){}
//创建静态内部类
static class Nei{
//解决:引用外部类的静态成员
//1.创建外部类对象,通过对象引用(一言不合就创对象!)
Wai wai1=new Wai();
wai1.yes4(); //引用外部成员方法
int nei1=wai1.yes1; //引用外部成员变量
注意:这里有些铁憨憨可能会问
我可不可以 static int nei1=wai1.yes1;
不可以!!!
因为static一开始就有的东西你咋让他在后面的值附上去!
}
}
- 静态内内部可以创建非static修饰的成员和方法
class Wai{
//创建静态内部类
static class Nei{//创建静态内部类
//非静态成员、非静态方法(实例成员、实例方法)
final int yes1=10;
int yes2=10;
final void yes3(){}
void yes4(){}
//静态成员、静态方法
static final int yes1=10;
static int yes2=10;
static final void yes3(){}
static void yes4(){}
}
}
静态内部类的访问格式
1. 内部类访问外部类(格式与成员内部类一致,但是但是!这种直接引用只能引用静态成员)
通过:外部类 . 静态成员/静态方法
class Wai{
//静态内部类 可以 直接引用的
static final int yes1=10;
static int yes2=10;
static final void yes3(){}
static void yes4(){}
//创建静态内部类
static class Nei{
static int nei=Wai.yes1; //访问格式
int nei=Wai.yes3; //访问格式
}
}
2. 外部类访问内部类
和成员内部变量一样!(和成员内部变量一样!创建方法,再创建内部类对象)
这里水一下,为了更多和我一样 这么转牛角尖的,就每篇都详细一下
class Wai{ //创建外部类
static 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类型)
但是一般开发来说内部类都是private类型,重点还是看通过:外部类方法引用吧
class Wai{
static 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=new Wai.Nei();
int jianInt2=jian1.nei1; //对静态内部类成员进行应用
}
}
2.创建外部类对象,外部类方法引用
class Wai{
private static 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(); //通过引用外部类方法进行引用
}
}
如果有不对的,各位大佬们就指点指点
加油学习