首页 > 编程语言 >java 内部类

java 内部类

时间:2024-04-11 10:13:11浏览次数:20  
标签:部类 java 内部 成员 访问 匿名 权限

在Java中,可以将一个类定义在另一个类里面或者一个方法里边,这样的类称为内部类,广泛意义上的内部类一般包括四种:成员内部类,局部内部类,匿名内部类,静态内部类 。

1.成员内部类

(1)该类像是外部类的一个成员,可以无条件的访问外部类的所有成员属性和成员方法(包括private成员和静态成员);

(2)成员内部类拥有与外部类同名的成员变量时,会发生隐藏现象,即默认情况下访问的是成员内部类中的成员。如果要访问外部类中的成员,需要以下形式访问:【外部类.this.成员变量  或  外部类.this.成员方法】;

(3)在外部类中如果要访问成员内部类的成员,必须先创建一个成员内部类的对象,再通过指向这个对象的引用来访问;

(4)成员内部类是依附外部类而存在的,也就是说,如果要创建成员内部类的对象,前提是必须存在一个外部类的对象;

(5)内部类可以拥有private访问权限、protected访问权限、public访问权限及包访问权限。如果成员内部类用private修饰,则只能在外部类的内部访问;如果用public修饰,则任何地方都能访问;如果用protected修饰,则只能在同一个包下或者继承外部类的情况下访问;如果是默认访问权限,则只能在同一个包下访问。外部类只能被public和包访问两种权限修饰。

2.局部内部类

(1)局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法内或者该作用域内;

(2)局部内部类就像是方法里面的一个局部变量一样,是不能有public、protected、private以及static修饰符的。

3.匿名内部类

(1)一般使用匿名内部类的方法来编写事件监听代码;

(2)匿名内部类是不能有访问修饰符和static修饰符的;

(3)匿名内部类是唯一一种没有构造器的类;

(4)匿名内部类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的实现或是重写。

4.内部静态类

(1)静态内部类是不需要依赖于外部类的,这点和类的静态成员属性有点类似;

(2)不能使用外部类的非static成员变量或者方法。

标签:部类,java,内部,成员,访问,匿名,权限
From: https://www.cnblogs.com/joshua317/p/18128183

相关文章

  • Java List集合去重、过滤、分组、获取数据、求最值、合并、排序、跳数据和遍历
    前言请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i、准备工作:现有一个User类、Student类和Ticket类,加入相关依赖@DatapublicclassUser{/***id*/privateIntegerid;/***姓名*/privateStringname;/**......
  • JavaScript处理异步循环的技术详解
    文章的更新路线:JavaScript基础知识-Vue2基础知识-Vue3基础知识-TypeScript基础知识-网络基础知识-浏览器基础知识-项目优化知识-项目实战经验-前端温习题(HTML基础知识和CSS基础知识已经更新完毕)正文使用async/await和Promise:优势:代码简洁,易读,适用于处理依赖关系较强......
  • 2024年主流的java混淆方案有哪些
    到2024年,主流的Java混淆方案可能会继续发展和更新,但目前常用的一些Java混淆方案包括:ProGuard:ProGuard是一个免费的Java字节码混淆器,能够对Java类进行压缩、优化和混淆,以增强应用程序的安全性和性能。DashO:DashO是一种商业级别的Java和Android混淆工具,提......
  • Day20_学点儿JavaEE_Cookie、Session
    0会话技术简介生活中会话我:小张,你会跳小苹果码?小张:会,怎么了?我:公司年会上要表演节目,你教教我把小张:没问题,一顿饭而已。我:OK。。。。。。。。。在这次生活中的会话中产生通话记录(会话数据)软件中的会话链接到数据库Connection,也叫会话,你要想操作数据库要和数据......
  • Java高阶私房菜:探索泛型之妙用
        “泛型”(generics)作为Java特性之一,已经出现较长时间了,相信大家或多或少有接触过,接下来我们将系统重新回顾一下泛型,温故而知新,希望能有些新的启发。Java中的泛型作为V1.5后新增的特性,在JDK源码、中间件源码中有大量的使用,如果掌握了泛型将更容易理解源码,也提升代码抽......
  • 基于java实现的二手车交易网站
    开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9页面展示用户功能模块定金支付管理,在定金支付管理页面可以填写订单编号、车型、品牌、分类、车身颜色、售价、订......
  • 基于java的某超市进销存管理系统
    开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9页面展示前台首页功能模块宜佰丰超市进销存管理系统,在系统首页可以查看首页、商品信息、新闻资讯、留言反......
  • 毕设作品案例-基于JAVA-SSM实现-微信小程序-校园电商商城系统-附源码+LW(文档+PPT)+示例
    目录概要小程序开发说明研究背景系统功能分析系统功能的具体实现(项目展示)小程序端-前台功能模块后台管理员功能模块管理员功能模块源码获取概要本文论述了微信小程序的校园商铺系统的设计和实现,该系统从实际运用的角度出发,运用了计算机系统设计、数据库等相关知识......
  • 【讲解下如何从零基础学习Java】
    ......
  • (Java)数据结构——排序(第一节)堆排序+PTA L2-012 关于堆的判断
    前言本博客是博主用于复习数据结构以及算法的博客,如果疏忽出现错误,还望各位指正。堆排序(HeapSort)概念堆排序是一种基于堆数据结构的排序算法,其核心思想是将待排序的序列构建成一个最大堆(或最小堆),然后将堆顶元素与最后一个元素交换,再将剩余元素重新调整为最大堆(或最小堆),重复......