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. [Python]round四舍五入精度缺失的解决

    环境: os: win7 64bit python:2.7.5  32bit 对python四舍五入的解决方案 现象: 一般的四舍五入操作都是使用内置的round方法   In [14]: round ...

  2. Linux+eclipse+gdb调试postgresql源码

    pg内核源码解析课上用的vs调试pg源码, VS用起来确实方便,但是配置调试环境着实有点麻烦.首先得装个windows系统,最好是xp,win7稍微麻烦点:最好使用vs05,08和10也可以,但是比0 ...

  3. CSS常用选择器

    关于CSS常用选择器: 1.ID选择器 关于ID选择器具有唯一性,在文档流中,ID是唯一的,在低版本的浏览器中,允许出现不适唯一ID的情况,而在高版本的浏览器中,出现ID不唯一的情况浏览器会出现的报错 ...

  4. 关于UIView 的autoresizingMask属性,即UIViewAutoresizing

    enum {   UIViewAutoresizingNone                 = 0,   UIViewAutoresizingFlexibleLeftMargin   = 1 &l ...

  5. php form表单post提交获取不到数据,而使用get提交能获取到数据 的解决办法

    开发环境:xampp,mac,phpstorm 其实出现这个问题的原因就是在于phpstorm,它默认使用的是自带的内部服务器,这个服务器使用63342端口,而且服务器内部有问题,导致POST方法异常 ...

  6. 新版ADT出现appcompat_v7的问题

    问题 更新ADT至22.6.0版本号之后,创建新的安装项目,会出现appcompat_v7的内容.而且是创建一个新的内容就会出现. 事实上appcompat_v7是Google自己的一个兼容包.一个支 ...

  7. Git使用之基于SSH的Gitserver的client配置(下篇)

    1.  软件安装 Git-1.9.2-preview20140411 TortoiseGit-1.8.8.0-64bit.msi 1.1 安装msysgit 很easy,基本就是一路下一步,有几个地方 ...

  8. udp 不需要 listen

    accept()不是监听,accept()是接受新连接.listen()是进入监听状态,表示愿意接收连接请求.listen之后有连接请求就将其放到队列中,accept()时把新连接请求从队列中取出,建 ...

  9. c - 输出 101 至 200之间的素数.

    #include <stdio.h> #include <math.h> //判断 101-200 之间有多少个素数,并输出所有素数. int main(void) { , e ...

  10. C#中静态构造函数含义及使用

    static以前都接触过,可是最近才发现了还有静态类的写法,也可能是以前没太注意了,所以自己去研究了一下! 1.什么是构造函数: 1.1 例如:static  Class{} 1.2 使用静态函数的注 ...