2021/7/16第九天
1、创建内部类对象格式:
外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
外部类名.内部类名 对象名 = 外部类对象名.new 内部类型();
2、无关类调用内部类,在外部类方法中new一个内部类对象 或 创建内部类对象
3、内部类可以直接调用外部类方法、对象。外部类调用内部需要new内部类对象
4、如果有重名,就近原则,this.a(本类中),外部类名.this.a(外部类中)
5、局部内部类(只使用一次)不能有修饰符。
6、内部类主要用于:继承抽象类/实现接口
7、局部内部类中使用局部变量时,默认加了final无法修改(成员变量可以正常使用)。但是局部变量方法内是可以修改的。
package day09.part;
public class PartInner {
int b=1;
public void M1(){
int num=10;
num=30;//方法内可以正常使用
//局部内部类不可加修饰符
class M1{
int a=1;
public void PartIn(){//外部类和自己的成员变量可以正常赋值,运算。但是局部变量不行
a=a++;
num=10;//Variable 'num' is accessed from within inner class, needs to be final or effectively final
b=b++;
}
}
}
}
8、内部类
package day09;
public class Outer {
int a=1;
public class Inner{
int a=2;
private void testIn(){
int a=3;
testOut();//可以直接调用外部类方法
System.out.println(a);//三个a变量
System.out.println(this.a);//this是这个类中的a(当前)
System.out.println(Outer.this.a);//调用外部类Outer的当前的a
}
}
private void testOut(){
Inner in=new Inner();
in.testIn();//外部类方法内必须先创建对象才能调用内部类方法
}
}
9、静态内部类new方法
Out.staticpart i=new Out.staticpart;
cs