内部类:
1.把类定义在其他类的内部,我们称之为内部类;
内部类的特点:
1.2、外部类要想访问内部类的成员,必须要创建内部类的对象
class Outer{ private int num = 10; class Inner{ public void show(){ System.out.println(num); } } public void fun(){ // show(); //创建内部类对象 Inner inner = new Inner(); inner.show(); } } public class InnerClassDemo1 { public static void main(String[] args) { Outer outer = new Outer(); // outer.show(); outer.fun(); } }
2、按照内部类在类中定义位置不同,可以分为如下两种格式:
成员变量(成员内部类)
局部位置(局部内部类)
class Outer2{ //定义在成员的位置上(成员内部类) class Inner2{ } public void fun(){ //定义在局部范围内(局部内部类) class Inner3{ } } } public class InnerClassDemo2 { }
3、成员内部类:
a,定义在类的成员位置上
b,内部类可以访问外部类的成员,包括私有的
c,要想在测试类中访问内部类的show()方法,就必须创建对象
格式为:外部类名.成员内部类 对象名=new 外部类名.new 成员内部类名();
class Outer3{ private int num = 10; class Inner{ public void show(){ System.out.println(num); } } } public class InnerClassDemo3 { public static void main(String[] args) { //需求:要想在测试类中访问到Inner类中的show方法,就必须得创建对象 // Inner inner3 = new Inner(); //正确创建成员内部类对象的格式 //外部类名.成员内部类名 对象名 = new 外部类名().new 成员内部类名(); // Outer3.Inner oi3 = new Outer3().new Inner();//可以分开写下面就是拆开写 // oi3.show(); Outer3 outer3 = new Outer3(); Outer3.Inner inner = outer3.new Inner(); inner.show(); } }
成员内部类常见的修饰符:
private:其他类不能直接创建内部类的对象
要想使用被private修饰内部类成员,必须在本类中间接的创建对象调用
static:内部类如果是被static修饰的时候,只能访问外部类中静态成员
当内部类是被静态所修饰的时候,出现了另外一种创建内部类的方式 外部类名.内部类名 对象名 = new 外部类名.内部类名(); Outer4.Inner4 oi4 = new Outer4.Inner4(); oi4.fun();
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)