您的位置:首页 > 职场人生

黑马程序员——内部类

2015-10-13 10:44 274 查看

黑马程序员——内部类

内部类的分类:

分成员内部类、局部内部类和匿名类

成员内部类:

1在外部类中访问内部类规则:

(1)内部类可以直接访问外部类中的成员,包括私有,之所以可以直接访问外部类中的成员是因为内部 类中持 有一个外部类的引用,格式为:外部类名.this
(2)外部类要想访问内部类必须先建立内部类的对象。

2外部其他类访问一个内部类格式:

(1)当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类上直接建立内部类对象。格式为:外部类名.内部类名 变量名=外部类对象.内部类对象
(2)在外部其他类中直接访问被Static修饰的内部类中的非静态成员,其格式为: new 外部类名.内部类名().方法名()
(3)在外部其他类中直接访问被static 修饰的内部类中的静态成员时,其格式为:外部类名.内部类名.方法名( ),

3位置:

成员内部类在类中方法外,其写法跟普通类一样,有属性和方法。

主意:一般情况下类是不能被Static,private,修饰的,但是由于成员内部类属于一个类中的成员,所以他是可以被Static,private修饰的,但是被static修饰的内部类只能访问外部类中的静态成员,出现了访问局限性。如果在一个类的静态方法中,要想访问其内部类,这个内部类也必须是静态的。其实如果你在本类非静态方法中,如果想用这个非静态的内部类,你可以把这个类当成一个普通的类来用,通过new对象来调用其成员方法

局部内部类:

位置:在类的方法中

主意:该局部内部类是不可以被成员修饰符所修饰的,该内部类还是可以直接访问其外部类中的成员,因为还持有外部类的引用,但是该局部内部类要想访问他所在函数中的局部变量,该变量必须被final修饰,但是在jdk1.7版本中,可以不用final修饰,如果该类所在的方法是静态方法,那莫该类一定是静态类


匿名内部类:

根据这个内部类的位置,他可以是某个类中的成员内部类对象,也可以是某个类中的局部内部类对象,只是没有指向他的一个引用;一般情况匿名内部类都是定义在方法中的,因为我们定义匿名内部类一般都是要调用其方法的,属于语句,而语句只能写在方法里,所以一般匿名内部类都是局部内部类。当然,他也可以被说成是某个类或接口的一个子类,说法都对。他可以覆盖父类中的一些方法,同样父类中的非私有属性,和方法他都是可以调用的,跟平常类的继承是没有太大区别的,注意:在写这个内部类时,一定要想好,你到底想让他干嘛,不要为了单纯写内部类而写,如果你不调用他的方法,这个内部类是没有意义的,如果你调用这个内部类的多个方法,最好给他一个指向他的引用。




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: