6.面向对象_内部类

1.内部类定义

内部类:将一个类定义在另一个类里面,对里面那个类就称为内部类。(内置类、嵌套类)内部类可以被私有修饰。

2.内部类访问规则

访问特点:

  • 内部类可以直接访问外部类中的成员,包括私有成员。之所以可以直接访问外部类的成员,是因为内部类中持有了一个外部类的引用,格式:外部类名.this
  • 而外部类要访问内部类中的成员,就必须要建立内部类的对象。内部类不是独立存在的,是存在于外部类中,所以当内部类要建立对象时必须要标识出他是属于哪个外部类的(存在内部类名称相同的情况)
  • 当内部类定义在外部类的成员位置上,而且非私有,就可以在外部其他类中建立内部类对象,格式:外部类名.内部类名 变量名 = 外部类对象.内部类对象例:Outer.Inter in = new Outer().new Inter()

3.静态内部类

当内部类在成员位置上,就可以被成员修饰符所修饰。如:

  1. private:将内部类在外部类中进行封装。
  2. static:内部类就具备了static的特性。(当内部类被static所修饰后,只能直接访问外部类中的static成员,出现了访问局限。)

在外部其他类中,如何直接访问static内部类的非静态成员呢?(new Outer.Inter().funtion;)

在外部其他类中,如何直接访问static内部类的静态成员呢?(Outer.Inter.funtion;)

注意:当内部类中定义了静态成员,该内部类必须是static的。

   当外部类中的静态方法访问内部类时,内部类也必须是static的。

4.内部类定义原则

原则:当描述事物时,事物的内部还有事物,该事物用内部类来描述。因为内部事物在使用外部事物的内容。一般用于程序设计上。

内部类不但能定义在成员位置上,还能定义在局部位置上。

内部类定义在局部时:

  1. 不可以被成员修饰符修饰。
  2. 可以直接访问外部类中的成员,因为还持有外部类中的引用,但是不能访问它所在的局部中的变量,只能访问被final的局部变量。

5.匿名内部类

匿名内部类:

  1. 匿名内部类其实就是内部类的简写格式。
  2. 定义内部类的前提:内部类必须是继承一个类或者实现接口。
  3. 匿名内部类的格式:new 父类或者接口(){定义子类的内容}
  4. 其实内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对象。
  5. 匿名内部类中定义的方法最好不要超过3个。

黑马程序员_Java面向对象_内部类的更多相关文章

  1. 黑马程序员_Java面向对象_异常

    6.异常 1.异常: 就是程序在运行时出现不正常的情况.问题也是现实生活中一个具体的事物,也可以通过Java的类进行描述,并封装成对象.Exception和Error的子类名都是以父类名作为后缀名. ...

  2. 黑马程序员_Java面向对象_包

    7.包 7.1包(package) 对类文件进行分类管理. 给类提供多层命名空间. 写在程序文件的第一行. 类名的全称是:包名.类名. 包也是一种封装形式. 利用命令行自动生成文件夹格式:D:\jav ...

  3. 黑马程序员_Java面向对象2_继承

    4.面向对象_继承 4.1继承的概述 提高了代码的复用性. 让类与类之间产生了关系,有了这个关系,才有多态的特性. 注意:千万不要为了获取其他类的功能而去继承,简化代码而继承.必须是类与类之间有所属关 ...

  4. 黑马程序员_Java面向对象3_多态

    5.面向对象_多态 多态定义:某一种事物存在的多种形态. 例:动物中猫,狗. 猫这个对象对应的类型是猫类型. 猫 x = new 猫(); 同时猫也是动物的一种,也可以把猫称为动物. 动物 y = n ...

  5. 黑马程序员_Java面向对象1_封装

    3.面向对象_封装 3.1面向对象概念 3.1.1理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程:强调的是功能行为(执行者) 面向对象:将功能封装进对象,强调具备了 ...

  6. 黑马程序员_Java基础视频-深入浅出精华版--PPT 文件列表

    \day01\code\第一章_Java概述.ppt;\day01\resource\资料\50道编程题(有精力的同学看看).doc;\day01\resource\资料\Sun_Java程序员认证考 ...

  7. 课程2:《黑马程序员_Java基础视频-深入浅出精华版》-视频列表-

    \day01\avi\01.01_计算机基础(计算机概述).avi; \day01\avi\01.02_计算机基础(计算机硬件和软件概述).avi; \day01\avi\01.03_计算机基础(软件 ...

  8. 黑马程序员_Java基础组成

    Java语言基础组成 2.1关键字 main不是关键字,但被JVM所识别的名称. 关键字的定义和特点 定义:被Java语言赋予了特殊含义的单词. 特点:关键字中所有字母都为小写. 用于定义数据类型的关 ...

  9. 黑马程序员_Java基础视频-深入浅出精华版--视频列表

    \day01\avi\01.01_计算机基础(计算机概述).avi; \day01\avi\01.02_计算机基础(计算机硬件和软件概述).avi; \day01\avi\01.03_计算机基础(软件 ...

随机推荐

  1. JS-事件处理

    1.一个简单的单击事件: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  2. 安装 Android 运行环境

    如果你恰好有一些旧的. 过时的 Android SDK 版本,请务必把所需的包更新至下面提到的版本并安装所有缺少的部分. 安装和配置 SDK 安装最新的 JDK. 使用 brew install an ...

  3. apache archiva安装教程

    1. 下载archiva standalone  http://archiva.apache.org/download.cgi 2. 解压,设置ARCHIVA_HOME 环境变量 3.为了防止冲突, ...

  4. (转)Eclipse/Myeclipse 注释注释模板

    Window -->preferences --> Java --> Code Style --> Code Templates --> Comments --> ...

  5. IE6下的怪异解析知识点补充

    转载请注明出处:HTMl5自由者      

  6. Python:ajax 学习笔记

    什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味 ...

  7. 关于Discuz!nt论坛编辑器图片上传bug,flash域的问题

    正在整discuz!nt,现在没有什么人弄了把? 上个星期突然来了个bug,搞死我了,论坛图片不能上传,上传卡在100%没反应了,于是我发现ajax发送到AttachUpload.cs时queryst ...

  8. Xcode7 iOS9网络配置

    iOS9为了增强数据访问安全,将所有的http请求都改为了https,为了能够在iOS9中正常使用地图SDK,请在"Info.plist"中进行如下配置,否则影响SDK的使用. & ...

  9. JS 匿名函数

    一.声明: 1. 正常函数声明: //正常函数声明 function foo(p1, p2){ return p1+p2; } 2. 匿名函数声明: //匿名函数声明 var foo= functio ...

  10. Linux 编译安装httpsqs

    wget http://httpsqs.googlecode.com/files/libevent-2.0.12-stable.tar.gz tar zxvf libevent-2.0.12-stab ...