文章目录
1.0实例内部类
1.1实例内部类和外部类相同的变量怎么访问?
class OuterClass{
public int date1=1;
class InnerClass{
public int date1=11;
public void test(){
System.out.println(" 内部类普通方法!!");
//访问的是内部的date1,因为如果内外都有的话,会优先访问局部的
System.out.println(date1);
//我们可以通过 外部类类名.this.外部类成员变量(OuterClass.this.date1)
System.out.println(OuterClass.this.date1);
}
}
}
1.2如何实例化实例内部类?
public class Test {
public static void main(String[] args) {
//我们可以通过 实例外部类类名.实例内部类类名 引用变量=实例外部类对象.实例内部类对象
OuterClass.InnerClass innerClass=new OuterClass().new InnerClass();
innerClass.test();//通过引用来访问实例内部类对象
}
}
1.3实例内部类不能有静态变量??
class InnerClass{
public static int date2=2;//会报错
public static final int date2=2;//如果要加静态变量需要加final 来修饰
}
注意:实例内部类不能有静态方法
1.0静态内部类
静态内部类与实例内部类不一样的地方是,静态内部类可以实现静态方法和静态变量。
class OuterClass{
public int date1=1;
public int date2=2;
public int date3=3;
/**
* 被static修饰的内部类被称为静态内部类
*/
static class InnerClass{
public int date4=4;
public int date5=5;
public InnerClass() {
System.out.println(" 静态内部类的构造方法!!");
}
public void test(){
System.out.println("这是一个普通方法!!");
}
}
}
1.1静态内部类里面不能直接访问非静态数据成员??
class OuterClass{
public int date1=1;
public int date2=2;
public int date3=3;
/**
* 被static修饰的内部类被称为静态内部类
*/
static class InnerClass{//在编译的时候就生成了,所以我们要间接访问外部类数据
public int date4=4;
public int date5=5;
public InnerClass() {
System.out.println(" 静态内部类的构造方法!!");
}
public void test(){
OuterClass outerClass=new OuterClass();//我们可以创建一个对象间接访问
System.out.println("这是一个普通方法!!");
System.out.println(date4);不能直接访问非静态数据
System.out.println(date5);
System.out.println(outerClass.date1);//用外部类引用来间接访问外部类数据
System.out.println(outerClass.date2);
System.out.println(outerClass.date3);
}
}
}
1.2静态内部类怎么实例化?
public class Test {
public static void main(String[] args) {
//外部类类名.静态内部类类名 引用变量=new.外部类类类名.静态内部类对象
OuterClass.InnerClass innerClass=new OuterClass.InnerClass();
}