java的内部类

news/2024/11/16 13:06:01/

1.内部类的概念
内部类表示的事物是外部类的一部分,内部类单独出现没有任何意义。如发动机是汽车的一部分。
内部类的访问特点:
(1)内部类可以直接访问外部类的成员,包括私有;
(2)外部类要访问内部类的成员,必须创建对象。
示例:
在这里插入图片描述
二、内部类的分类
分为成员内部类、静态内部类、局部内部类和匿名内部类,前三个能看懂即可(方便看源码),匿名内部类必须掌握。
1.成员内部类
写在成员位置,属于外部类的成员。如上例。成员内部类可以被一些修饰符所修饰,比如:private,默认,protected,public,static等。
补充:private修饰的成员只能在该类中使用(该类的方法使用),无修饰符(default)的成员可以被该类所在包中的类使用,protected修饰的成员可以被该类所在包中的类及其子类使用,public修饰的成员可以被任意类使用。
获取成员内部类对象的两种方法:
(1)在外部类中编写方法,对外提供内部类的对象;
blog.csdnimg.cn/f99ede46369e4ed980b9b4ba8667cbc8.png)
注意:Car.java文件编译之后会生成两个字节码文件,一个是Car.class,一个是Car&Enginee.class
在这里插入图片描述
(2)直接创建格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象;
在这里插入图片描述
在这里插入图片描述
注意:若内部类被private修饰,则上图中的代码报错。

内部类访问外部类的成员变量:
书写格式为:外部类.this.成员变量名
在这里插入图片描述
在这里插入图片描述
也遵循“就近原则”:
在这里插入图片描述
在这里插入图片描述
再例如:
在这里插入图片描述
在这里插入图片描述
2.静态内部类(属于成员内部类的一种)
内部类使用static修饰。
静态内部类只能访问外部类中的静态变量和静态方法,如果想要访问非静态的需要创建对象。
创建静态内部类对象的方式:
外部类名.内部类名 对象名 = new 外部类名.内部类名();
3.局部内部类
将内部类定义在方法里就是局部内部类,类似于方法里的局部变量。外界是无法直接使用,需要在方法内部创建对象并使用。该类可以直接访问外部类的成员,也可以访问方法内的局部变量。
注:静态内部类和局部内部类就不举例子了。
4.匿名内部类(以前的文章里讲过,先看那篇)
匿名内部类本质上是隐藏了名字的内部类。当方法的参数是接口或类时,以接口为例,可以传递这个接口的实现类对象,如果实现类只要使用一次,就可以用匿名内部类简化代码。
在这里插入图片描述
(1)接口的匿名内部类(实现关系)
在这里插入图片描述

(2)抽象类的匿名内部类(继承关系):
在这里插入图片描述
解释:匿名内部类是为了省去写实现接口或继承抽象类的类的步骤
匿名内部类可以写在成员位置,也可以写在局部位置。
(1)写在局部位置(写在类的方法中):
在这里插入图片描述
在这里插入图片描述
还可以写成这样,自己调用自己定义的方法:
在这里插入图片描述

(2)写在成员位置:
在这里插入图片描述
注意:因为main()方法是静态方法所有匿名内部类swimObject也加了static,也可以两者都不加。


http://www.ppmy.cn/news/300725.html

相关文章

仿真用计算机配置,需要进行仿真,选什么配置的电脑比较好

满意答案 yang851221 2019.10.18 采纳率:40% 等级:8 已帮助:309人 楼主你好,你没说预算不敢给你配太贵的…不多说,请看配置:主板:映泰th616.x价格:¥599要稳定和性价比…

iphone11各机型对比_iPhone 11系列配置规格对比 快来看看哪款最适合你

【手机中国新闻】日前,苹果正式宣布,将于美国当地时间9月10日上午举办秋季新品发布会,发布全新iPhone产品。不出意外的话,就是之前曝光的iPhone 11系列,至少有iPhone 11、iPhone 11 Pro、iPhone 11 Pro MAX三款新品。9…

荣耀x10和荣耀20pro哪个好?参数配置对比介绍

荣耀x10和荣耀20pro哪个好? 屏幕尺寸的话,荣耀x10比较大,单手难操控,荣耀20pro单手握持感比较好;最大的不同就是x10是升降摄像头,而20pro是挖孔,从屏幕观感来讲x10会更好,但是整台机器会更重; 来源&#…

使用IPSW文件将iOS系统从Beta恢复到稳定正式版教程

起因 作为一名iOS开发者,为了拥抱新系统(手贱),将开发机升级到了最新的iOS 17 Beta版本,从而导致使用现有的Xcode无法成功配对该版本系统。故准备想方设法回滚到原先的iOS 16.5稳定版 回滚方式 若要将iOS设备回退至…

auto.js自动化手机脚本初始配置

软件选择: auto.js 8.0pro版本(对比4.0版本有阉割,微信支付宝不能点)有两种模式: 客户端模式服务器模式 auto.js 4.0版本有一种模式:客户端模式 设备和电脑连接: 手机: **服务器模…

opporeno8Pro和opporeno8Pro+有哪些区别 两者配置对比

opporeno8系列作为一款拍照水桶机,在配置上十分出色,的人这个系列出了3款不同的型号,分别是opporeno8Pro和opporeno8Pro,那么,opporeno8Pro和opporeno8Pro有哪些区别?下面来看看两者的配置对比吧。 opporeno8Pro和op…

一加ace竞速版和一加9rt哪个值得买 两者配置对比

一加ace竞速版和一加9rt作为主打性价比的两款手机,在配置上都十分优秀,那么,如果两者对比,一加ace竞速版和一加9rt哪个值得买?下面来看看两者的配置对比吧。 一加ace竞速版和一加9rt两者配置对比 屏幕方面 一加9RT&#xff1a…

OPPO K10和红米k50哪个值得买 两者配置对比

在昨天OPPO K10正式发布了,而这部手机在未发布前就备受关注,此次发布曝光的配置也十分强劲,那么,OPPO K10和红米k50哪个值得买?下面来看看两者配置对比吧。 OPPO K10和红米k50配置对比 屏幕方面 OPPO K10:OPPO K10…