返回顶部
首页 > 资讯 > 后端开发 > Python >Java基础之内部类与代理知识总结
  • 647
分享到

Java基础之内部类与代理知识总结

2024-04-02 19:04:59 647人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、内部类1.1 创建内部类1.2 内部类调用外部类的变量二、局部内部类2.1 外部方法访问变量三、匿名内部类四、lambda表达式结合局部内部类五、静态内部类六、代理一、内部类

一、内部类

内部类是指在另一个类中的类

  • 内部类可以对同一个包中的所有类隐藏(权限改为private)
  • 内部类方法可以访问定义这个类的作用域中的数据,包括原本私有的数据

注意:内部类位于类的内部,并不意味着类的实例都必须要有内部类的实例

内部类是可以访问定义这个类的属性的,因为内部类的对象总有一个隐式引用,指向创建它的外部类对象

对于一般的类,只有包可见性和公共可见性(一个是缺省,另一个是public,没有protected和private,protected一般对于外部类权限是没多大用处的)

但对于内部类,可以是所有类型,public、protected、default、private(因为是内部类,外面还套着一个类,所以protected是有意义的)

1.1 创建内部类

内部类的new比较特殊,是建立在以实例化的外部类去执行的(而且前提内部类不为private)

在这里插入图片描述

如果内部类为private的话,对于外部是根本找不到这个类的,不可以去调用,而且只有外部类可以构造内部类的实例对象

1.2 内部类调用外部类的变量

也是使用this关键字,不过为了区分this(区分是外部类还是内部类),使用外部类的属性时,需要用:外部类名.this来操作

在这里插入图片描述

二、局部内部类

如果一个类只要使用一次,可以直接在一个方法中局部地去定义这个类,更好地节约了空间

注意:局部内部类声明时是不可以有访问说明符的(public或者private),局部类的作用域被限定在声明这个局部类的方法块中,局部类最大的优势就是,对外部世界是完全隐藏的,甚至在本类也不可以访问,也就是除了声明局部类的方法块中,没有任何其他类或方法可以访问局部类,知道其存在

在这里插入图片描述

2.1 外部方法访问变量

局部类的一个优点就是局部类不仅可以访问外部类的字段,还可以访问方法里面的局部变量

在这里插入图片描述

访问的方法与内部类是一致的

三、匿名内部类

如果对于局部内部类使用时,甚至不需要去定义匿名内部类的名字,只是想单独去创建对象,那么可以不用给其设置名字,称为匿名内部类

比如说,想要一个临时的接口实现类

在这里插入图片描述

当然不一定是一个接口,也可以是一个类,如果是接口就要去实现里面的抽象方法,如果是类的话,就可以自定义去进行拓展

在这里插入图片描述

四、lambda表达式结合局部内部类

前面说过lambda表达式适用于函数式接口,所以我们也可以使用lambda表达式来实现局部内部类

当然,lambda表达式生成的相当于是一个参数,所以要使用方法入参来调用

在这里插入图片描述

lambda表达式使用一个空括号代表无参,所以建议,即使只有一个参数,也放在括号里面

五、静态内部类

或许有的时候,只是想将内部类隐藏起来,并不需要内部类拥有外部类的一个引用指针(即this),那么可以将内部类用static关键字去修饰,这样内部类就不会有外部类的引用了(无法使用到外部类的方法和变量了),称为静态内部类

六、代理

代理(proxy)是一种比较高级的计技术

利用代理可以在运行时创建实现了一组给定接口的新类(在不知道要实现哪些接口时)

到此这篇关于Java基础之内部类与代理知识总结的文章就介绍到这了,更多相关Java内部类与代理内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java基础之内部类与代理知识总结

本文链接: https://lsjlt.com/news/127605.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java基础之内部类与代理知识总结
    目录一、内部类1.1 创建内部类1.2 内部类调用外部类的变量二、局部内部类2.1 外部方法访问变量三、匿名内部类四、lambda表达式结合局部内部类五、静态内部类六、代理一、内部类...
    99+
    2024-04-02
  • Java基础之Math和Random类知识总结
    java的Math类 java中的java.lang.Math类可以直接使用,不需要导包,在JDK的API 中看到Math类被final修饰着,那么说明了这个Math类不能被继承,...
    99+
    2024-04-02
  • java基础之String知识总结
    目录一、概念二、特点三、三种构造方式:四、字符串常量池一、概念 String代表字符串,java语言中所有双引号的字符串都是String的对象,不管是否是new出来的对象。 二、特点...
    99+
    2024-04-02
  • Java基础知识总结之继承
    目录一、继承的基本概念二、继承的好处和弊端三、继承中变量访问的特点四、super关键字五、继承中构造方法的访问特点六、继承中成员方法的访问特点七、方法重写八、包九、修饰符十、stat...
    99+
    2024-04-02
  • java基础之泛型知识点总结
    目录一、什么是泛型?为什么要使用泛型? 二、泛型的特性是什么?三、泛型的使用方式 四、Java中的泛型通配符一、什么是泛型?为什么要使用泛型? 泛型,即“参数化...
    99+
    2024-04-02
  • Java基础之位运算知识总结
    目录一、位运算的分类与展现效果二、原理三、边界值测试一、位运算的分类与展现效果 java位运算可以分为左移和右移,其中右移还有无符号右移。   java只对整型位移,可...
    99+
    2024-04-02
  • JAVA基础知识点总结
    文章目录 前言一、JAVA简介二、基础语法面向对象StringIntegerObject异常IO序列化Java 泛型注解反射 前言 一、JAVA简介 Java 是一门面向对象的编程语言。 语言特点:面向对象,平台无关性,支持多...
    99+
    2023-08-18
    java jvm 开发语言
  • java基础详解之数据类型知识点总结
    目录一、基本数据类型1.1 整形1.1.1 int1.1.2 长整形:long1.1.3 短整形:short1.2 浮点型1.2.1 双精度浮点型:double1.2.2 单精度浮点...
    99+
    2024-04-02
  • Java基础之引用相关知识总结
    目录一、引用的定义二、问题三、引用的分类四、应用场景五、源码六、总结一、引用的定义 在JDK 1.2以前,Java中的引用定义很传统:如果reference类型的数据存储的数值代表的...
    99+
    2024-04-02
  • Java基础之并发相关知识总结
    目录一、Java并发是什么?二、怎么做?三、分工四、同步五、互斥六、总结一、Java并发是什么? 用学术定义来说就是 并发:同一时间段,多个任务都在执行 (单位时间内不一定同时执行...
    99+
    2024-04-02
  • Java基础之MapReduce框架总结与扩展知识点
    目录一、MapTask工作机制二、MapTask工作流程:三、ReduceTask工作机制四、ReduceTask工作流程:五、数据清洗(ETL)六、计数器应用七、计数器案例八、Ma...
    99+
    2024-04-02
  • python基础之文件处理知识总结
    目录一、open()方法二、read()方法三、readlines()方法四、seek()方法五、tell()函数  一、open()方法 python open...
    99+
    2024-04-02
  • Python基础之元组与文件知识总结
    目录大纲Python文件类型及汇总一、元组二、文件三、pickle存储和读取python对象四、类型汇总大纲 Python文件类型及汇总 一、元组 1 特征 1.任意对象的有序集...
    99+
    2024-04-02
  • Spring5学习之基础知识总结
    目录1.概述2.入门Demo3.源码1.概述 1、Spring 是轻量级的开源的 JavaEE 框架 2、 Spring 可以解决企业应用开发的复杂性 3、Spring 有两个核心部...
    99+
    2024-04-02
  • Java基础之数组超详细知识总结
    目录一、一维数组二、二维数组三、总结一、一维数组 1、Java语言中的数组是一种 引用数据类型。不属于基本数据类型。数组的父类是 Object。 2、数组实际上是一个容器,可以同时容...
    99+
    2024-04-02
  • Java基础之逻辑运算符知识总结
    目录一、前言二、逻辑运算符三、代码四、结果五、练习一、前言 逻辑运算符 左右都是布尔类型的操作数,表达式的结果也是布尔类型 true或false 二、逻辑运算符 &...
    99+
    2024-04-02
  • Java基础学习之字符串知识总结
    目录一、前言二、String 类(字符串常量)2.1 String 类实例的创建2.2 String 对象的比较2.3 String对象的空值2.4 字符串拼接三、StringBui...
    99+
    2024-04-02
  • Java基础之线程锁相关知识总结
    一、 synchronized关键字 1.对象锁 a.当使用对象锁的时候,注意要是相同的对象,并且当有线程正在访问对象锁内部的代码的时候,其他线程无法访问。(注意无法访问的范围)。 ...
    99+
    2024-04-02
  • Python基础之数据类型相关知识总结
    1、字符串 (1)概念 字符串英文名string,简称str。 字符串就是由一个个字符连接起来的组合, 你平时所见的字母、数字、汉字、符号都是字符。 字符串可以用...
    99+
    2024-04-02
  • Python基础之logging模块知识总结
    目录前言一、日志级别二、basicConfig三、日志写文件四、traceback记录前言 logging模块是Python内置的标准模块,主要用于输出脚本运行日志,可以设置输出日志的等级、日志保存路径等。 ...
    99+
    2022-06-02
    Python logging模块 python常用模块
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作