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. ARC代码和非ARC代码 混用

    选中工程->TARGETS->相应的target然后选中右侧的“Build Phases”,向下就找到“Compile Sources”了.然后在相应的文件后面添加:-fobjc-arc参 ...

  2. Java JDBC连接SQL Server2005错误:通过port 1433 连接到主机 localhost 的 TCP/IP 连接失败

    错误原因例如以下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cann ...

  3. PHP字符串的编码问题(转)

    大家都知道,不同字符编码,其在内存占用的字节数不一样.如ASCII编码字符占用1个字节,UTF-8编码的中文字符是3字节,GBK为2个字节.   PHP 也自带几种字符串截取函数,其中常用到的就是 s ...

  4. 函数返回char* 的解决方案

    在C语言中,自动变量在堆栈中分配内存.当包含自动变量的函数或代码块退出时,它们所占用的内存便被回收,它们的内容肯定会被下一个所调用的函数覆盖.这一切取决于堆栈中先前的自动变量位于何处,活动函数声明了什 ...

  5. 坑爹的vector iterators incompatible错误(VS中属性页-->C/C++-->代码生成-->>运行库)

    之前一直被这个错误折磨着,就是不知道问题在那,后来找了很多资料,大概都是说这是因为多个线程同时操作vector的问题(参考这里).可是我这里的代码并没有问题,因为同样的代码在别的解决方案中已经成功运行 ...

  6. css让div水平垂直居中

    示例1: .div1{ width:200px; height:300px; border:1px solid #000; position: relative; } .div2{ width: 40 ...

  7. oracle 按某个字段查询重复数据

    /* 手机号为重复的会员,获取其最大会员id,对应的会员信息 */ SELECT * FROM MEMBER a WHERE a.member_id IN ( SELECT MAX(member_id ...

  8. 自定义ViewGroup 流式布局

    使用 public class MainActivity extends Activity {     @Override     protected void onCreate(Bundle sav ...

  9. Java:单例模式的七种写法(转载)

    第一种(懒汉,线程不安全): package Singleton; /** * @echo 2013-10-10 懒汉 线程不安全 */ public class Singleton1 { priva ...

  10. 获取checkboxlist选中的值以及绑定来自之前选中的来自数据库的值

    //////ps:一下几句都是一个意思,为的是以后有人搜索关键字的时候能定位到这里///checkboxlist绑定选中值///checkboxlist绑定来之mssql数据的值///checkbox ...