一、内部类

  1、内部类概述:把类定义在其他类内部,这个类被称为内部类(内部类可以使用static修饰,外部类不可)

  2、内部类访问特点:内部类可以直接访问外部类成员,包括私有的

               外部类要访问内部类的成员,必须创建对象

  3、内部类位置:

      成员位置:在成员位置定义的类,被称为成员内部类

      局部位置:在局部位置定义的类,被称为局部内部类

  4、成员位置内部类案例

    内部类和外部类没有继承关系

    通过外部类限定this对象

  5、局部位置内部类

    可以直接访问外部类成员

    在局部位置可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能

    局部内部类访问局部变量必须用final修饰,原因:局部变量是随着方法的调用而调用,随着方法使用完毕而消失,而堆内存的内容不会立即消失(要等垃圾回收器空闲时才回收垃圾变量)。局部变量加final修饰后变为常量,经反编译可看到,局部内部类访问的变量直接是常量而非变量

 

  6、匿名内部类(内部类的简化写法)

    前提:存在一个类或者接口(这里的类可以是具体类也可以是抽象类)

    格式: new  类名或者接口名(){

          重写方法;

        }

    本质:是一个继承了该类或实现了该接口的子类匿名对象

    案例:

  1. interface Inter {
  2. public abstract void show();
  3. public abstract void show2();
  4. }
  5. class Outer {
  6. public void method() {
  7. Inter i = new Inter() { //多态
  8. public void show() {
  9. System.out.println("show");
  10. }
  11.  
  12. public void show2() {
  13. System.out.println("show2");
  14. }
  15. };
  16.  
  17. i.show();
  18. i.show2();
  19. }
  20. }
  21. class InnerClassDemo6 {
  22. public static void main(String[] args) {
  23. Outer o = new Outer();
  24. o.method();
  25. }
  26. }

7、

匿名内部类面试题:
按照要求,补齐代码
interface Inter { void show(); }
class Outer { //补齐代码 }
class OuterDemo {
public static void main(String[] args) {
Outer.method().show();
}
}
要求在控制台输出”HelloWorld”

  1. interface Inter {
  2. void show(); //public abstract void show();
  3. }
  4. class Outer {
  5. //补齐代码
  6. public static Inter method() {
  7. //子类对象 -- 子类匿名对象
  8. return new Inter() {
  9. public void show() {
  10. System.out.println("HelloWorld");
  11. }
  12. };
  13. }
  14. }
  15. class OuterDemo {
  16. public static void main(String[] args) {
  17. Outer.method().show();
  18. /*
  19. 1:Outer.method()可以看出method()应该是Outer中的一个静态方法。
  20. 2:Outer.method().show()可以看出method()方法的返回值是一个对象。
  21. 又由于接口Inter中有一个show()方法,所以我认为method()方法的返回值类型是一个接口。
  22. */
  23. }
  24. }

匿名内部类面试题

Java初学(七)的更多相关文章

  1. java初学的分析

    java初学的分析第一阶段:入门阶段学习目标:简单项目开发学习内容:1.Java入门书籍,Java基础知识.关于Java入门级的书,给大家推荐过<Java编程思想>.<Java核心技 ...

  2. Java基础七-正则表达式

    Java基础七-正则表达式 一.定义: 特定的符号的组合 二.作用: 用于操作字符串数据 三.优缺点 简化代码,但是阅读性差 四.引入 4.1 问题 判断一个号码是否是QQ号? 不是零开头 6-15位 ...

  3. 20165210 Java第七周学习总结

    20165210 Java第七周学习总结 教材内容学习 第十一章学习总结 连接数据库: 1. 下载JDBC-MySQL数据库驱动 2. 加载JDBC-MySQL数据库驱动 3. 连接数据库 4. 注意 ...

  4. “全栈2019”Java第七十九章:类中可以嵌套接口吗?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. “全栈2019”Java第七十八章:内部类可以继承其他类吗?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. “全栈2019”Java第七十七章:抽象内部类与抽象静态内部类详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  7. “全栈2019”Java第七十六章:静态、非静态内部类访问权限

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  8. “全栈2019”Java第七十五章:内部类持有外部类对象

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. “全栈2019”Java第七十四章:内部类与静态内部类相互嵌套

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

随机推荐

  1. [转]Nginx+ThinkPHP不支持PathInfo的解决办法

    FROM : http://www.4wei.cn/archives/1001174 应集团要求,公司的服务器全收到集团机房统一管理了,失去了服务器的管理配置权限. 杯具就此开始. 首先要解决文件大小 ...

  2. zabbix一件漂亮的外衣配置

    http://www.cnblogs.com/yyhh/archive/2015/09/08/4792830.html

  3. C语言 位运算

    1G=1024M; 1M=102KB; 1KB=1024B(字节); 1B=8bits(位); #include<stdio.h> #include<stdlib.h> //C ...

  4. Web消息主体风格(Message Body Style)

    对于Web HTTP编程模型来说,服务契约中作为操作的方法无须应用OperationContractAttribute特性,只需要根据需要应用WebGetAttribute与WebInvokeAttr ...

  5. java从0开始学——数组,一维和多维

    #,在java中,允许数组的长度为0:也就是允许      int[] zeroLenthArray = new int[0]; #,匿名的数组初始化是合法的:     int[] smallPrim ...

  6. 微信小程序全选,微信小程序checkbox,微信小程序购物车

    微信小程序,这里实现微信小程序checkbox,有需要此功能的朋友可以参考下. 摘要: 加减商品数量,汇总价格,全选与全不选 设计思路: 一.从网络上传入以下Json数据格式的数组  1.标题titl ...

  7. 工作随笔——CentOS6.4支持rz sz操作

    yum一句话解决: yum -y install lrzsz

  8. 第十章 使用MapKit

    本项目是<beginning iOS8 programming with swift>中的项目学习笔记==>全部笔记目录 ------------------------------ ...

  9. chromiun 学习《二》 目录结构 +启动流程

    1.chromium的目录结构. 2.先上分析图一张.主要是从BrowserMain进程进行分析的.

  10. rational rose USE CASE