内部类

  1. Java中允许将一个类A声明在另一个类B中,则A是内部类,B是外部类。
  2. 内部类的分类:成员内部类(静态、非静态)vs局部内部类(方法内、代码块内、构造器内)
  3. 成员内部类:
    一方面,作为外部类的成员
    可以调用外部类的结构
    可以被static修饰。
    可以被四种不同的权限修饰
    另一方面,作为一个类
    类内可以定义属性、方法、构造器等;
    可以被final修饰,表示此类不能被继承。也就是说,不使用final就可以被继承。
    可以被abstract修饰。
  4. 关注如下的3个问题
    4.1 如何实例化成员内部类的对象
 Person.Dog dog = new Person.Dog(); //创建静态成员内部类的对象,Dog是Person的内部类
Person p = new Person();
Person.Bird bird = p.new Bird;//创建非静态成员内部类的对象,Bird是Person的内部类

4.2如何在成员内部类中区分调用外部类的结构

假设Person和Bird有重名的name

 System.out.println(this.name);//内部类的属性System.out.println(Person.this.name);//外部类的属性

4.3开发中,局部内部类如何使用(详情见《InnerClassTest1.java》)

//返回一个实现了Comparable接口的类对象
public Comparable getComparable(){class MyComparable implements Comparable{重写方法代码;}return new MyComparable();
}

一般局部内部类都是上述应用
上述代码也可以用另一种方式——匿名实现类的匿名对象

return newComparable(){重写方法;};

注意:

  • 在局部内部类的方法中,如果调用局部内部类所声明的方法中的局部变量,要求此局部变量声明为final的。
  • jdk7及之前的版本: 要求此局部变量显式的声明为final的
  • jdk8及之后的版本:可以省略final的声明

面向对象19:内部类相关推荐

  1. Java面向对象(OOP)--内部类(匿名内部类)

    1. 匿名内部类 没有(或者不需要)命名来初始化类,就称为匿名内部类. 在这四种内部类中,以后的工作可能遇到最多的是匿名内部类,所以说匿名内部类是最常用的一种内部类. 什么是匿名对象? 如果一个对象只 ...

  2. java编程笔记8 面向对象三 内部类

    2011-03-03 22:47 a)       匿名类(区别于匿名对象) 没有明确的类定义格式,是指类的定义和类的对象的创建合并在一起的情况. 匿名类属于一个唯一的对象,在生成接口的同时定义匿名类 ...

  3. JAVA面向对象详细

    文章目录 10 面向对象 1.对象的概念(属性,方法) 2. 类的概念 3. 对象的创建(实例化对象) ※※※对象在内存中的存在形式※※※ 4. 类中的方法(成员方法) 5. 方法的参数传递方式 1. ...

  4. 第三次学JAVA再学不好就吃翔(part43)--局部内部类访问局部变量

    学习笔记,仅供参考 面向对象 局部内部类访问局部变量 啥叫局部内部类? 局部内部类是指在方法中定义的内部类. 举个例子(访问局部内部类) 局部内部类: class InnerTest1 {public ...

  5. Java面试:数据库,Java,框架,前端技术。应有尽有

    ** Java面试宝典 ** 一. HTML&CSS部分 1.HTML中定义表格的宽度用80px和80%的区别是什么? PX标识像素,%标识整个页面的宽度百分比 2.CSS样式定义优先级顺序是 ...

  6. 【java】《java编程思想》 读书笔记

    之前主要用的C++的比较多,之前花了快2个月的实际认真系统全面的学习了以下java的基础语法,<java编程思想>这本书翻译水平确实不是很好,很多话读着会比较拗口.推荐读之前,先去网上搜索 ...

  7. 面试+学习+做项目+最全Java视频讲解

    关注公众号:计算机视觉与图形学实战 Java零基础教程视频(适合Java 0基础,Java初学入门) 尚硅谷Java零基础入门教程(含百道Java真题,2万多行Java代码实战) 黑马程序员全套Jav ...

  8. java编程思想--概述

    之前主要用的C++的比较多,之前花了快2个月的实际认真系统全面的学习了以下java的基础语法,<java编程思想>这本书翻译水平确实不是很好,很多话读着会比较拗口.推荐读之前,先去网上搜索 ...

  9. java面试题,看我这篇就够了,前端后台应有尽有,包你通过面试

    面试题精华版:https://blog.csdn.net/cencong863251/article/details/88963573 以下为详情版: HTML&CSS部分 1.HTML中定义 ...

  10. 1.Java学习过程笔记(传播智客毕向东)

    目录 1.Helloworld. 1 Java. 1 变量... 2 关键字(所有字母为小写)... 2 标识符... 2 IF语句... 3 99乘法表... 3 99主函数带入参数... 3 内存 ...

最新文章

  1. 肺炎疫情期间购买口罩小记
  2. MySQL的mysql_insert_id和LAST_INSERT_ID
  3. 解决 吃货阶段02 0928
  4. 性能提升120倍!滴滴东北大学提出自动结构化剪枝压缩算法框架
  5. python opencv库下载_PythonopenCV 2.4.3 cv2.SolvePnP
  6. 传TD-SCDMA独立组网 跨国通信公司一片沉默
  7. 问题:html控件中sleect的Option()的用法
  8. go-结构化,方法的创建以及使用
  9. 计算机服务重置,怎么重置电脑网络设置
  10. html语言span标签,html 中span标签里面都能放那些标签??
  11. 小米watch s2功能介绍 小米watch s2测评值得买吗
  12. MyBatis常见问题
  13. 解决wordpress部分博客文章页面无法显示的问题
  14. 华为安防产品VCN资料下载
  15. Java数组讲解(数组,字符串数组,多态数组)
  16. html css精灵,CSS spirit /css精灵
  17. DSP PWM 模块原理及使用
  18. quill-editor使用方法,图片base64位转为url缩减字符长度,以及显示文字个数,光标位置等
  19. 【安装教程】Ubuntu18.04中用CMake-gui安装OpenCV4.1.0和OpenCV_contrib-4.1.0(图文)
  20. 《码农翻身》读后感---程序员的潜规则

热门文章

  1. 原生 JS 撸一个轮播图(支持拖拽切屏)
  2. 研究发现,近一半生产容器存在漏洞
  3. sql Sever的存储过程转换为mysql的
  4. 用于物联网数据收集和传输的边缘网络密钥
  5. Qt数据库集成应用封装
  6. 《黑客秘笈——渗透测试实用指南(第2版)》—第1章1.6学习
  7. oracle rac的特征
  8. I.MX6 Android shutdown shell command
  9. javascript的模块开发方法;
  10. Eclipse中自动生成get/set时携带注释