黑马程序员——内部类
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修饰,如果该类所在的方法是静态方法,那莫该类一定是静态类
匿名内部类:
根据这个内部类的位置,他可以是某个类中的成员内部类对象,也可以是某个类中的局部内部类对象,只是没有指向他的一个引用;一般情况匿名内部类都是定义在方法中的,因为我们定义匿名内部类一般都是要调用其方法的,属于语句,而语句只能写在方法里,所以一般匿名内部类都是局部内部类。当然,他也可以被说成是某个类或接口的一个子类,说法都对。他可以覆盖父类中的一些方法,同样父类中的非私有属性,和方法他都是可以调用的,跟平常类的继承是没有太大区别的,注意:在写这个内部类时,一定要想好,你到底想让他干嘛,不要为了单纯写内部类而写,如果你不调用他的方法,这个内部类是没有意义的,如果你调用这个内部类的多个方法,最好给他一个指向他的引用。
相关文章推荐
- 黑马程序员-单例设计模式:“饿汉式”和“懒汉式”
- 黑马程序员———方法属性及类的一些修饰符
- 黑马程序员_java 线程池
- 剑指Offer 面试题三:二维数组中的查找
- 黑马程序员_Selenium Webdriver 简单应用
- 我做技术面试官的一些体会
- 黑马程序员———类中方法的特点
- 黑马程序员——2.1.基础语法(关键字、常量、进制、变量、类型转换、运算符、流程控制(判断、选择、循环))
- 黑马程序员——1.Java概述(Dos命令、环境变量、Hello World、注释)
- 黑马程序员——面向对象的三大特点
- 明天要做到更好-兄弟连IT教育
- 黑马程序员———面向对象
- iOS面试
- 黑马程序员——面试题小总结2
- 黑马程序员——面试题小总结1
- 黑马程序员——逻辑值预算和面试题
- 黑马程序员——内部类和它的面试题
- 新的开始——写给自己的话
- (程序员内在修炼)《熔炉》观后感:承认并且面对生活的丑陋面
- 悼念程序员的那些难忘时刻