Java#22(内部类)

news2024/10/6 8:24:26

目录

一.内部类

1.什么是内部类?

2.什么时候用?

3.特点

二.成员内部类,静态内部类,局部内部类(稍微了解即可)

1.获取成员内部类对象的两种方式?

2.外部类成员变量和内部类成员变量重名时,在内部类如何访问?

2.静态内部类

3.局部内部类

三. 匿名内部类(重点)

1.什么是匿名内部类?

2.匿名内部类的格式?

3.格式的细节


一.内部类

1.什么是内部类?

在一类里面在定义一个类

例如:

public class A类{

        public class B类{

                        

        }

}

A类就是外部类,B类就是内部类

2.什么时候用?

B类表示的食物是A类的一部分,而且B类单独存在没有意义

3.特点

(1)内部类可以直接访问外部类的成员,包括私有

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

代码示范:

package Demo;

//外部类(车类)
public class Car {
    String carName;
    int carAge;
    String carColor;
    public void show(){
        System.out.println(carName);
        Engine e = new Engine();
        e.engineName = "aabbcc";
        System.out.println(e.engineName);
    }
    //内部类(发动机类)
    class Engine{
        String engineName;
        int engineAge;
    }
}
package Demo;

public class Test {
    public static void main(String[] args) {
        Car c = new Car();
        c.carName = "宝马";
        c.show();
    }
}

二.成员内部类,静态内部类,局部内部类(稍微了解即可)

1.获取成员内部类对象的两种方式?

方式一:当成员内部类被private修饰时, 在外部类编写方法,对外提供内部类对象

方式二:当成员内部类被非私有修饰时,直接创建对象 外部类名.内部类名 对象名 = new 外部类名().new 内部类名();

2.外部类成员变量和内部类成员变量重名时,在内部类如何访问?

System.out.println(外部类名.this.变量名);

2.静态内部类

(1)静态内部类只能访问外部类中的静态变量和静态方法,如果想要访问非静态的需要创建对象
(2)创建静态内部类对象的格式: 外部类名.内部类名 对象名 = new 外部类名.内部类名();

调用非静态方法的格式: 先创建对象,用对象调用

调用静态方法的格式: 外部类名.内部类名.方法名();

3.局部内部类

(1)将内部类定义在方法里面就叫做局部内部类,类似于方法里面的局部变量

(2)外界是无法直接使用,需要在方法内部创建对象并使用。
(3)该类可以直接访问外部类的成员,也可以访问方法内的局部变量

三. 匿名内部类(重点)

1.什么是匿名内部类?

隐藏了名字的内部类,可以写在成员位置,也可以写在局部位置

2.匿名内部类的格式?

new 类名或者接口名() {

        重写方法

};

(整体是匿名内部类的对象,{ }代表的才是匿名内部类,匿名内部类和前面的类名是继承关系,和接口名是实现关系)

3.格式的细节

包含了继承或实现,方法重写,创建对象整体就是一个类的子类对象或者接口的实现类对象
4.使用场景
当方法的参数是接口或者类时以接口为例,可以传递这个接口的实现类对象

如果实现类只要使用一次,就可以用匿名内部类简化代码

代码示范:

package Demo;

public abstract class Animal {
    public abstract void drink();
}
package Demo;

public class Test1 {
    public static void main(String[] args) {
        test(
                //匿名内部类
                new Animal(){
            @Override
            public void drink() {
                System.out.println("喝水");
            }
        }
        );
    }
    public static void test(Animal a){
        a.drink();
    }
}

结果展示:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/28362.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

verdi基础操作

看波形: 1.代码里选中,再按鼠标中键拖进去 2.选中,ctrlw 3.用get signal 在波形框中,按照鼠标左键再左右移动,可以放大这一部分的波形,还有下面的功能键可以用 删除波形: 按delete或者cut掉…

如何压缩图片200k以下?

“图片过大无法上传”,“因您上传的图片大小超过限制”这样的提示大家都有遇到过吧?这就是告诉我们现在的图片需要压缩一下才能继续使用了,否则我们就无法使用当前照片了。 那有很多平台,特别是上传一些证件照的时候,要…

北京筑龙获爱分析采购数字化报告大满贯, 领跑供应链协同市场

2022年11月21日,国内领先的数字化市场研究咨询机构爱分析发布了《2022爱分析采购数字化厂商全景报告》(以下简称《报告》)。北京筑龙凭借专业的数字化技术、采购供应链数字化经验以及在政企数字化领域积累的丰富项目实践经验,成功…

微信小程序商城搭建步骤_我们来说说微信小程序商城开发的作用

比如下面我推荐的这个就有很多不错的各行业商城小程序模板,新手也能轻松搭建的那种!(见我主页) 但要想把商城小程序运营到能稳定赚钱,就需要商家结合自身的实际,去指定合适的推广策略。下面就讲讲如何实现线…

第4章 配置集成第3方log4net日志中间件

在上一章中虽然已经把第3方log4net日志中间件定义到了当前程序中,但是并没有把第3方log4net日志中间件的功能配置并集到当前程序中,即当前程序还不能通过第3方log4net日志中间件把日志数据信息持久化到指定的文件或表中,本章即将实现当前程序…

SpringBoot2.X与redis Lettuce集成踩坑

起因 最近项目上发现一个问题,redis cluster集群有一台机崩了之后,后台服务的redis会一直报错,无法连接到redis集群。通过命令查看redis集群,发现redis cluster集群是正常的,备用的slave机器已经升级为master。 于是初…

c<7>存储

目录 1&#xff0c;局部变量 1,auto 2,static 2&#xff0c;全局变量的储存类型 3,register 4,extern 作用&#xff1a; 1&#xff0c;局部变量 #include <stdio.h> int main() {int fAuto(int a);int fStatic(int a); //函数声明int a 1, i; //自动局部变…

去了家新公司,技术总监不让用 IntelliJ IDEA想离职了

最近有个小伙伴微信和我说&#xff0c;新去的一家公司&#xff0c;技术团队全部规定要用的 Eclipse 开发&#xff0c;技术总监不让用 IntelliJ IDEA&#xff0c;付费也不行&#xff0c;说想离职了&#xff0c;问我该怎么办。 首先听到这件事情的时候&#xff0c;我表示十分理解…

关于消息队列的那些事

目录为什么需要消息队列1.异步处理2.服务解耦3.流量控制消息队列1.两种模型2.基本原理3.常见问题本篇文章参考文献如下&#xff1a; 面试题&#xff1a;如何保证消息不丢失&#xff1f;处理重复消息&#xff1f;消息有序性&#xff1f;消息堆积处理&#xff1f; (qq.com) 超详…

【数据通信】具有路由 WSN 模拟器的随机方式移动(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

Yolov5的类激活图

在本教程中&#xff0c;我们将了解如何将 EigenCAM&#xff08;无梯度方法之一&#xff09;用于 YOLO5。 这是https://github.com/jacobgil/pytorch-grad-cam/blob/master/tutorials/Class Activation Maps for Object Detection With Faster RCNN.ipynb 中 适用于 YOLO5的教程…

堆排序(算法实现)

文章目录堆排序-算法实现1. 向上调整和向下调整比较2. 堆排序1. 升序2. 降序堆排序-算法实现 前面介绍了堆的基本功能实现(https://blog.csdn.net/m0_46343224/article/details/127986662)&#xff0c;了解了堆&#xff0c;这里用堆实现排序 1. 向上调整和向下调整比较 思考&a…

1. pip和conda的区别

Pip 或者 conda的时候经常被混合使用&#xff0c;这两者也通常被认为是几乎相同的&#xff0c;尽管他们的很多功能是重叠的&#xff0c;但它们的设计和使用目的不同。所以这次参考官方的解释&#xff0c;来进行如下总结和归纳&#xff1a;附上官方解释&#xff1a;conda和pip的…

关于Python的局部变量和全局变量使用介绍

局部变量&#xff1a;在函数中定义的变量&#xff0c;作用域是当前函数&#xff0c;只对当前函数起作用。 全局变量&#xff1a;在代码开头定义的变量&#xff0c;作用域是整段代码&#xff0c;对整段代码起作用。 先看下面的实例&#xff0c; 最后给结论。 name ‘PythonTa…

月薪9K和年薪30W的职位,有什么区别?

【浙江杭州】加速科技 测试开发工程师&#xff08;15-30W/年&#xff09; 岗位职责&#xff1a; 1、根据产品的需求编写测试用例&#xff0c;搭建软硬件联合测试环境&#xff1b; 2、对研发的模块/系统进行测试并输出测试报告&#xff1b; 3、整理并定期提交buglist&#…

我的PFC岩土颗粒流离散元分析攻略(附赠学习资料)

作者 | Lobby &#xff0c;仿真秀专栏作者 导读&#xff1a;lobby曾是国内“双一流“”院校本硕连读土木专业的大学生&#xff0c;现在从事土木相关的研发工作。目前在仿真秀官网发布过数十篇付费文章&#xff0c;含金量颇高&#xff0c;受到用户的好评。本期我们将带来lobby老…

差分 【一维差分和二维差分】

全文目录&#x1f914;一维差分&#x1f615;差分数组的构建&#x1f914;二维差分&#x1f615;差分矩阵的构建&#x1f914;一维差分 首先来了解一下差分的性质&#xff0c;差分是前缀和的逆运算&#xff0c;如果说前缀和是&#xff1a;S f(n) &#xff0c;那么差分就是 D …

轻松拿下——类的默认成员函数

六大默认成员函数&#xff1a; 1、初始化&#xff1a;构造函数主要完成初始化工作 2、清理&#xff1a;析构函数主要完成清理工作 3、拷贝复制&#xff1a;拷贝构造是使用同类对象初始化创建对象 4、拷贝复制&#xff1a;赋值重载主要是把一个对象赋值给另一个对象&#xff…

linux文件压缩、解压缩以及归档

一、文件压缩、解压缩 1.linux compress命令&#xff08;compress/uncompress&#xff09; &#xff08;1&#xff09;压缩文件&#xff1a; [rootserver ~]# du -sh passwd1---查看文件大小 [rootserver ~]# time compress passwd1---time&#xff1a;查看时间 compress&…

医学主题词表(Medical Subject Headings, MeSH)

Medical Subject Headings 简称MeSH&#xff0c;由美国国立医学图书馆&#xff08;NLM出版&#xff09;&#xff0c;是目前最权威最常用的标准医学主题词表。 MeSH由范畴表&#xff08;Categories and Subcategories&#xff09;、字顺表&#xff08;Alphabetic listing&#…