Java重修第七天—内部类

通过学习本篇文章可以掌握如下知识

成员内部类

静态内部类

局部内部类

匿名内部类(重点掌握)


内部类

是类中的五大成分之一(成员变量、方法、构造器、内部类、代码块),其定义为:如果一个类定义在另一个类的内部,这个类就是内部类。

场景:当一个类的内部,包含了一个完整的事物,且这个事物没有必要单独设计时,就可以把这个事物设计为内部类。

例如:汽车中的发动机。

在这里插入图片描述

成员内部类

成员内部类就是类中的一个普通成员,类似之前学过的成员变量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

虽然成员内部类充当的时成员变量的成分,但是其本质还是一个类,因此类有的东西,它都有。

public class Outer {
    private static String A = "AAA";

    public class Inner {
        private String name;

        // 无参构造器
        public Inner() {
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public void test() {
            System.out.println("这是成员内部类的普通方法;");
            System.out.println(A);
        }
        
    }
}

由于内部类定义的是普通内部类,因此不能定义静态成员与静态方法,但是可以访问外部的静态变量

在JDK16时候进行改变,支持静态变量的定义

那么如何访问呢?

之前访问成员变量需要实例.成员变量,但是这个变量也是一个类,因此需要new,于是就有如下:

public class Test {
    public static void main(String[] args) {
        Outer outer = new Outer();
        Outer.Inner in = outer.new Inner();
        in.test();
    }
}

总结

在这里插入图片描述

静态内部类

有static修饰的内部类,属于外部类自己持有的,注意和内部类的区别。

在这里插入图片描述

代码实现

package cn.msf.baseJava.d_9_innerClass;

public class Outer2 {
    // 静态内部类
    public static class Inner2{
        private String name;
        public static int a;

        public Inner2(String name) {
            this.name = name;
        }

        public Inner2() {
        }

        public void test(){
            System.out.println("静态内部类的普通方法");
        }

        public static void test(int a){
            System.out.println("静态内部类的静态方法");
        }
    }
}



测试

public class Test {
    public static void main(String[] args) {
        Outer2.Inner2 inner2 = new Outer2.Inner2();
        inner2.test();
        Outer2.Inner2.test(2);
    }
}

打印结果

在这里插入图片描述

总结

在这里插入图片描述

局部内部类

局部内部类定义在方法中、代码块中、构造器等执行体中,属于鸡肋语法。

匿名内部类【重点】

是一种特殊的内部类,所谓匿名,即程序员不需要为这个类声明名字。

在这里插入图片描述

代码实现。以猫狗为案例讲解匿名内部类。

package cn.msf.baseJava.d_9_innerClass;

public class Test {
    public static void main(String[] args) {
        Animal a = new Cat();
        a.cry();

        // 如果想建立一个狗子呢?但是有不想声明类。
        // 这就是匿名内部类。
        Animal d = new Animal() {
            @Override
            public void cry() {
                System.out.println("我是狗子,U•ェ•*U");
            }
        };
        d.cry();
    }
}

abstract class  Animal {
    public abstract void cry();
}

class  Cat extends Animal {

    @Override
    public void cry() {
        System.out.println("猫喵喵喵的叫,o(=•ェ•=)m");
    }
}

结果展示

在这里插入图片描述

不用将它作为一个高大上的东西,其本质还是一个类,然后创建对象接收而已

总结
在这里插入图片描述

希望多多点赞收藏关注,如果有问题的地方,欢迎在评论区讨论!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SqlAlchemy使用教程(四) MetaData 与 SQL Express Language 的使用

四、Database MetaData 与 SQL Express Language 的使用 MetaData对象用于描述表结构,SQL Express Language是DBAPI SQL的统一封装器。MetaData 与SQL Express 语句可以在Core层使用,ORM层基于MetaData, SQL Express基础上做了进一步抽象。本章将介绍在…

如何使用Docker本地搭建Traefik服务并实现公网访问管理界面

文章目录 前言1. Docker 部署 Trfɪk2. 本地访问traefik测试3. Linux 安装cpolar4. 配置Traefik公网访问地址5. 公网远程访问Traefik6. 固定Traefik公网地址 前言 Trfɪk 是一个云原生的新型的 HTTP 反向代理、负载均衡软件,能轻易的部署微服务。它支持多种后端 (D…

电动工具直流调速专用集成电路GS069,具有电源电压范围宽、功耗小、抗干扰能力强等特性

GS069电动工具直流调速电路是CMOS专用集成电路,具有电源电压范 围宽、功耗小、抗干扰能力强等特点。通过外接电阻网络,改变与之相接 的VMOS 管的输出,达到控制电动工具转速的作用。该电路输出幅值宽, 频率变化小,占空比…

pytorch10:正则化(weight_decay、dropout、Batch Normalization)

目录 一、正则化regularization1.概念2.过拟合3.减小方差策略4 正则化--权值衰减 二、正则化-dropout2.1 dropout概念2.2 数据尺度变化2.3 nn.Dropout2.4 两种模式 三、Batch Normalization3.1 ICS现象(Internal Covariate Shift,内部协变量偏移)3.2 BN原…

本地搭建Oracle数据库结合内网穿透实现公网环境远程访问

最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2…

解决:ModuleNotFoundError: No module named ‘pymysql’

解决:ModuleNotFoundError: No module named ‘pymysql’ 文章目录 解决:ModuleNotFoundError: No module named pymysql背景报错问题报错翻译报错位置代码报错原因解决方法方法一,直接安装方法二,手动下载安装方法三,…

国图公考:2024山东省事业单位发布招聘公告

更多信息可以登录山东人事考试信息查看!

134基于matlab的时间序列预测

基于matlab的时间序列预测,包括最小二乘支持向量机和粒子群优化支持向量机及改进的粒子群优化支持向量机。输出测试结果,具有GUI可视化界面。程序已调通,可直接运行。 134matlab时间序列预测粒子群优化 (xiaohongshu.com)

Transformer原理与代码实现

Transformer原理与代码实现 概览 一、嵌入层 Embedding 二、位置编码 Positional Encoding 三、(整合)Transformer嵌入层 Transformer Embedding 四、带缩放的点积注意力机制 Scaled Dot-Product Attention 五、多头注意力 Multi-Head Attention 六…

基于ssm的社区流浪动物救助领养系统的设计与开发+vue论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,流浪动物信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足…

JavaScript SEO:如何为搜索引擎优化 JS

什么是 JavaScript SEO? JavaScript SEO 是技术 SEO 的一部分,其重点是使使用 JavaScript 构建的网站更容易被搜索引擎抓取、呈现和索引。 常见任务包括以下内容: 优化通过 JavaScript 注入的内容正确实施懒加载遵循内部链接最佳实践预防、…

国图公考:2024年度国考笔试成绩、合格分数线已出

中央机关及其直属机构2024年度考试录用公务员笔试成绩和合格分数线公布,考生可于即日起登录“中央机关及其直属机构2024年度考试录用公务员专题网站”查询。 按照笔试成绩从高到低的顺序,进面人员名单也已经公布。 如果没有进面也可以报考调剂&#xf…

探索自动化测试断言:提升测试效率与质量的关键!

前言 断言在自动化测试中起着关键的作用,它是验证测试结果是否符合预期的重要手段。如果在自动化测试过程中忽视了断言,那么这个测试就失去了其本质的意义,因为我们无法得知测试结果是否达到了预期的效果。因此,断言在自动化测试…

完美解决idea一直indexing,无法操作的问题

今天主要分享一下在使用idea 2020.3版本开发maven项目的时候,一直出现有效件index, 有时候是scaning indexing, 有时候是update indexing, indexing的时候,idea基本上就没办法操作了,连跳入到类或方法里都跳不了。不厌其烦。 于是…

导出功能开发

1.导出功能(仅表头) package nc.ui.yhlypx.yhlypxfkd.ace.action;import java.awt.event.ActionEvent; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List;import nc.ui.pubapp.uif2app.model.BillManageModel; imp…

keycloak部署

https://downloads.jboss.org/keycloak/11.0.2/keycloak-11.0.2.zip 1.上传zip 并解压 uzip keycloak-11.0.2.zip 2.创建mysql数据库 CREATE SCHEMA keycloak DEFAULT CHARACTER SET utf8 ; 3.安装mysql的jdbc驱动 下载mysql的JDBC驱动(mysql-connector-java-8…

代码随想录 Leetcode15. 三数之和

题目&#xff1a; 代码(首刷看解析 2024年1月15日&#xff09;&#xff1a; class Solution { public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> res;int n nums.size();sort(nums.begin(),nums.end());for(…

如何在 Ubuntu 22.04 上使用 LEMP 安装 WordPress

前些天发现了一个人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;最重要的屌图甚多&#xff0c;忍不住分享一下给大家。点击跳转到网站。 如何在 Ubuntu 22.04 上使用 LEMP 安装 WordPress 介绍 WordPress 是互联网上最流行的内容管理系统 (CMS) 之一…

清华裴丹|大模型时代的AIOps

在大模型时代下&#xff0c;运维界普遍关注一些问题&#xff1a;大模型能带来哪些收益&#xff1f;面临哪些技术挑战&#xff1f;与以往的 AIOps小模型是什么关系&#xff1f;有了大模型之后&#xff0c;那么AIOps的整体框架是什么&#xff1f;近期、中期、长期有哪些应用&…

基于ssm的线上旅游体验系统+vue论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…