黑马程序员_Object和内部类

ONNC Open Neural Network Compiler 开源神经网络编译器 一个 开源、模块化、可重用编译器算法和工具链的库,专门针对深度学习加速器(DLA)部署导入ONNX模型 ONNC是一个集合了开源、模块化、可重用编译器算法和工具链的库,专门针对深度学习加速器(DLA)。ONNC从底层开始构建,旨在将ONNX中间表示(IR)翻译成专有DLA代码。其软件架构设计强调可移植性和可重用性,从而简化了开发新后端的工作。上图展示了ONNC软件栈的顶层框图。软件栈从导入ONNX计算图模型到输出相应的硬件二进制文件,展示了各个功能块。 阅读详情

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 

Object和内部类

一、Object类

Object类是层次类结构的根类,就是所有对象的直接父类或间接父类。里面一定定义的所有对象的都具备的功能。这个是隐式的。就相当于:

                class  Demo extends  Object

而extendsObject 其实是隐式的,但确实继承了Object类,并且具有类中的方法。查看API文档,常用的方法有:

equals(Object)方法,比较对象是否相等,其实是比较对象地址值是否相等。而且,这方法接收的是一个Object类型的对象,既然Object是所有类的父类,那么这里就实现了多态。在我们应用的是,我们可以复写其中的equals方法,进行我们想要进行的比较方法。复写的是时候,注意的一点就是:接收的参数是Object类型,不能改变,否则就不是复写,所以当我们比较对象中特有数据时候,复写中还要加上一些判断和类型向下转型的动作。

toString()方法,返回该对象的字符串形式。

getClass()方法,这方法在反射时常用。返回此Object运行时的类,注意是类。返回值为Class。重点说下这个方法,首先我们创建对象时会加载相关的类文件,而类文件里面有关于食物的具体描述,比如说名称、方法和功能,而这类class文件在硬盘里是一个个实实在在的个体,可以把这些文件看做是对象,那么以面向对象的概念来说,这些class文件就会有一个类来描述它,这个类就是Class,只是名字起为Class。

当我们使用getClass方法时,就返回了一个类型为Class的引用,程序如下:

                 Class  c  = 对象.getClass();

这就把对象相对应的Class类型返回了,我的理解是,把描述这个对象的类文件整体返回了,有了这个对象的类文件,通过引用c,我们就可以获取这个类的名字,方法,参数等等。

而Class这个类中还有好多方法,比如getName(),就可以返回这个类的名字。

不部分一定要了解,熟悉。

我们再返回来看toString(),它就是返回对象的类名加上哈希值。其中的程序为:

          d.getClass().getName()+”@”+Integer.toHexString(d.HashCode())

当然toString方法也是可以复写的,写成我们想要的方法。

 

 

总结来说:

1)  Object类是所有类的父类。所以Object的引用可以接受其他任何子类对象,这里就是多态。

2)  其他类是隐式继承Object类,具有Object了方法

3)  复写Object的方法时,要注意如果使用子类特有方法,要向下转型,必要时要做一些判断。比如euqals()方法的复写。

4)  重点理解getClass()方法,这对后期学习反射来说挺重要

 

二、内部类

定义上,将一个类定义在另一个类里面,对里面那个类就称为内部类。

 

格式来说:

class A {

      int x ;

                    classB {  //内部类

         int y =0;

}

}

这里B类就是内部类。

既然内部类在外部类里面,就相当于一个外部类中的一个成员,所以就内部类就可以直接访问外部类成员,私有的成员也是可以访问的。而外部类缺不能直接访问内部类的成员,必须先建立内部类对象才可以访问。

方式一,建立内部类对象,访问内部类成员,程序为:

         classOuter{

         privateint x=0;

         classInner{

                   voidfunction(){

                            System.out.println("neibu lei ");

                   }

         }

         voidmethod(){  //外部类建立访问方式

                   Innerin = new Inner();  //建立内部类对象

                   in.function();      //调用内部类的方法

         }

}

之后只要在主函数中建立Outer的对象,调用method方法即可。

方式二,直接在主方法中访问内部类成员。程序为:

       在主函数中:

            Outer.Inner  in = new Outer().newInner();

                             in.function(); //直接调用内部类成员

     这里原因是因为内部类依存于外部类,所以要前面表示是外部类,也就是相当于内部类的一个成员。这样,内部类就可以被private修饰,成员么,就可以修饰的。

 个人理解来看,内部类也是一个类,但是给他上了一个标签,做好多事都得呆着这标签。

 

总结来说:

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

2)  之所以可以直接访问外部类中的成员,因为内部类中持有一个外部类的引用

3)  外部类要访问内部类,必须建立内部类对象

4)  当内部类定义在外部类成员位置上,而且不是私有的,就可以再主函数中直接建立内部类对象,格式就是方式二

5)  当内部类在成员位置上,就可以被成员修饰符修饰,比如private修饰符修饰。

6)  当内部类被static修饰时,就成静态内部类,这时内部类只能直接访问外部类中的static成员

外部其他类,访问static内部类的非静态成员

             new Outer.Inner().function();

外部其他类,访问static内部类的静态成员

              user.Inner.function();

以上两个实际开发中用的都比较少。

7)  注意:当内部类定义了static成员,内部类也必须是静态的

8)  当外部类的静态方法访问内部类时,内部类也必须是static的

三、内部类定义原则

类是描述现实中事物,当描述事物时,事物的内部还有事物,该事物用内部类来描述,因为内部事物在只用外部事物的内容。

就比如描述电脑,而电脑里有显示器,键盘,而它们各有各的功能属性和行为,但是这两个又和电脑本身有联系,所以按照现实生活联系来说,这样就可以定义内部类,这样是最优的。

 

四、匿名内部类(常用)

1、内部类定义在局部中

内部类可以定义在外部类中的成员部分或者局部部分。如果内部类放在局部的时候,要在局部建立内部类对象并调用内部类里的方法时,对象建立要在内部类语句后面。具体程序为:

class Outer

{

         voidmethod(){

                   classInner

                   {

                            boidfunction(){

                                     语句;

                            }

                   }

                   newInner().function();//建立对象语句必须在内部类之后

         }

}

需要注意的是:1)内部类定义在局部时,不可以被成员修饰符修饰

              2)内部类定义在局部时,可以直接访问外部类成员,因为持有外部类中的引用

              3)内部类定义在局部时,不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量。

 

就上上述程序中,method方法中如果加入一个局部变量,或者加入引用参数(也就是局部变量),那么想要内部类引用的话,就要加上final。程序如下:

         voidmethod(final int x ){

                   classInner

                   {

                            final int y =3;

                            boidfunction(){

                                     System.out.println(x);

                                     System.out.println(y);

                            }

                   }

                   newInner().function();

         }

 

2、匿名内部类

匿名内部类其实就是内部类的简写格式

先看一段程序:

         classOuter{

         privateint x=0;

         classInner{

                   voidfunction(){

                            System.out.println("neibu lei ");

                   }

         }

         voidmethod(){ 

         newInner() .function();     

         }

}

Inner为内部类,我们想要的是一个匿名的内部类,那这类类就没有名字:

                      class {  方法 }

那么这个内部类既然没有名字,那么在外部类就无法创建其对象,这就涉及到匿名内部类定义的前提:内部类必须是继承一个类或者实现接口。

有这样一个前提,那么就可以通过多态,即父类或接口的引用来指向对象,把斜体的部分:

         classOuter{

         privateint x=0;

         class extends Advice{

                   voidfunction(){

                            System.out.println("neibu lei ");

                   }

         }

         voidmethod(){ 

                  new Inner() .function();       

         }

}

改为如下程序:

         voidmethod(){ 

     new Advice(){

         voidshow(){

                   System.out.println(“neibu lei”);

}

}

         }

}

这就是匿名内部类的写法,这就是上面的斜的部分的简写,这是一个对象,是一个子类的对象。既然这就是一个对象,那么在大括号最后可以加  .fucntion();   进行方法调用,程序如下:    newAdvice(){

                            voidshow(){

                             System.out.println(“nei bu lei”);

}

}.function();

个人认为,就是内部类继承一个类或实现一个接口时,我们引用内部类时,直接在方法中建立匿名内部类,相当于接口引用后直接在内部写入内部类实现的功能即可,这就是一个大的对象,这个对象就是内部类的对象,就可以用多态给他起名字然后按照对象的方法调用其中的方法即可。

 总结来说:

1)  匿名内部类时内部类的简写格式

2)  定义匿名内部类的前提:内部类必须继承一个类或实现接口

3)  匿名内部类格式: new 父类或几口( ) { 定义子类内容 }

4)  匿名内部类其实就是一个匿名的子类对象(就是那个内部类的对象),只是少名字,加入内部类的内容,本质上还是一个对象,而且是子类对象。

5)  匿名内部类中定义的方法最好是一到两个

6) 匿名内部类可以作为参数传递,这样方便很多,之后用到会很多

就是说,我的一个方法 method(Interface in),要传入一个接口类型的对象,那么通常的方法就是建立一个类,这个类实现这个接口的方法,然后利用多态传入这个类的对象。现在有了匿名内部类,就可以直接建立匿名内部类传入,具体程序为:

         public static void show ( new Advice(){

                                            void show(){

                                         System.out.println(“nei bu lei”);

}

}

);

 

 

注意:即便是内部类中没有继承一类或实现接口,但是它有父类Object,同样可以创建匿名内部类。

Kong API Gateway 配置与深入 Kong是一个开源的、高性能的API网关,提供了一种简单易用的服务间路由、流量管理和安全防护方案,其最初起源于Nginx Inc.,但后迁移至Apache Software Foundation。Kong支持RESTful、GraphQL、TCP/UDP等协议,可与AWS Lambda、Azure Functions、Google Cloud Functions等云函数平台集成。其主要功能包括:服务发现与负载均衡、请求代理、身份认证与授权、缓存、日志记录、监控指标、灰度发布、多种插件等。 阅读详情

相关推荐

Cesium+Three.js融合实战:从零构建GIS与BIM一体化场景

本文详细介绍了如何将Cesium与Three.js进行技术融合,从零构建GIS与BIM一体化场景。通过环境配置、核心场景搭建、坐标转换、性能优化及交互处理等实战步骤,阐述了Cesium负责宏观地理空间渲染、Three.js处理微观精细BIM模型的协同方案,为智慧城市、数字孪生等应用提供关键技术实现路径。

weixin_29230865的博客 460

黑马程序员-学习日记-JAVA中API中的Object类和包的含义及内部类

黑马程序员-学习笔记   黑马程序员-JAVA中API中的Object类和包的含义及内部类   ------- android培训、java培训、期待与您交流! ----------   一.    API中Object类:    1:Object类:是所有类的根类,超类;java中提供的类以及我们自定义的类都直接或者间接的继承自Object类。        2:Object

Java程序员命运之改变 809

从IMU数据到精准定位:手把手推导ESKF中的四元数运动学与误差状态方程

本文详细介绍了如何从IMU数据推导ESKF中的四元数运动学与误差状态方程,实现精准定位。通过分析误差状态卡尔曼滤波器的优势、四元数表示的必要性,以及IMU测量模型和运动学基础,提供了完整的数学推导和实现要点。适合机器人定位和自动驾驶领域的算法工程师参考,帮助优化导航系统性能。

weixin_30271335的博客 680

黑马程序员—Object类及内部类

------- android培训、java培训、期待与您交流! ---------- Object类 每个类都使用Object类作为超类,也就是所有类的直接或者间接父类 该类中定义的肯定是所有对象 都具备的功能 常见方法 1. equals(Object obj); eg1: class Demo{} Demo d1 = new Demo(); Demo d2 =

向日葵mm的博客 468

MacBook 上 LaTeX 环境搭建:从 Mactex 到 Sublime Text 与 Skim 的保姆级配置流程

本文详细介绍了在MacBook上搭建LaTeX环境的完整流程,从Mactex安装到Sublime Text与Skim的配置优化。涵盖基础环境准备、编辑器设置、PDF预览同步等关键步骤,帮助用户快速建立高效的LaTeX工作流,特别适合学术写作和技术文档创作。

weixin_30824599的博客 681

基于Web的智能家居(源码+开题)

实践上,智能家居系统的普及和应用将极大改善人们的居住体验,提高生活质量,同时也有助于促进智能家居产业链的发展和完善,为社会经济发展注入新的活力。此外,本研究还将对基于Web的智能家居系统的用户体验进行深入研究,通过用户调研和数据分析,不断优化系统功能和界面设计,提升用户的使用体验和满意度。针对以上问题,本研究将综合运用物联网、云计算、大数据等新一代信息技术,通过系统架构设计、功能模块开发、安全性保障、用户体验优化等多个方面的研究工作,力求为基于Web的智能家居系统的研发和应用提供全面而有效的解决方案。

sryue06的博客 1904

黑马程序员——Java包、内部类、Object类

------- android培训、java培训、期待与您交流! ---------- 一、包 其实就是文件夹 1:作用: A:给类提供多层名称空间,区分同名的类 B:对类进行分类管理 a:按照功能分 b:按照模块分 2:包的定义 package 包名;包名的写法规范:所有的字母都小写。 多级包用.分开。

Donald1989的博客 481

Unity3D实现项目限制功能(使用次数限制和时间限制)

大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。在软件开发的时候,可能会遇到程序的使用次数限制,以及时间的限制,下面就写一下这两种方法是新建注册表,增加键值对,修改键值,完成对程序的控制提示:以下是本篇文章正文内容,下面案例可供参考以上就是讲了两种限制方法不定时更新Unity开发技巧,觉得有用记得一键三连哦。

心疼你的一切博客 1811

黑马程序员—八期黑马,我放弃了

文章来源:黑马程序员,黑马论坛

heima_271的专栏 5031

Python爬虫反爬:突破Cloudflare 5秒盾(免费方案,小红书/知乎可用)

这套方案的核心优势是“真实模拟+免费无门槛”无需付费代理、无需复杂JS解密,仅用playwright模拟真实浏览器,即可突破Cloudflare 5秒盾;适配小红书、知乎、豆瓣等主流平台,修改配置即可复用;兼顾易用性和稳定性,新手也能快速上手,企业级场景可通过IP轮换、异步爬取进一步优化。“模拟人类行为到底”——Cloudflare的反爬本质是区分“机器”和“人类”,只要爬虫的浏览器指纹、行为特征与人类一致,就能稳定绕过限制。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2881

不同IP网段的PLC进行S7通信(PUT_GET)的具体步骤

不同IP网段的PLC进行S7通信(PUT_GET)的具体步骤 一般情况下,我们使用西门子的S7通信时都是将网络中的PLC的IP设置在同一网段,那么如果涉及到旧项目改造时,不方便修改IP地址,只能进行2个网段通信时,可以参考以下步骤: 准备条件: 2个路由器 CPU 1212C 主动连接 CPU 314C-2PN/DP 被动连接 网络搭建如下图所示: S7-1212C一侧 建立S7主动连接 ,IP地址:192.168.5.40,编写get/put 通信程序 S7-300 IP地址:192.168.0

Robot_PLC_HMI_Automation 2万+

黑马程序员——java复习总结——多态和内部类

------- android培训、java培训、期待与您交流! ---------- 一、多态   1.1      多态的定义   对于多态,可以理解为某一类事物的多种表现形态。   1.2      多态的体现 父类的引用,指向了自己的子类对象,这就是多态的代码体现形式。 多态的代码体现: 1.3      多态的前提 必须是类与类之间有关系,要么继承,要么

key_fans的博客 533

大模型对齐的核心引擎:RLHF三阶段完整技术体系详解——从InstructGPT到ChatGPT与Claude 4.6的工程实践

RLHF从InstructGPT起步,经由ChatGPT、Claude系列的工程实践,已演变为现代大语言模型不可或缺的对齐基础设施。其三阶段流程——SFT构建基础能力基线,奖励模型将人类偏好编码为可微信号,PPO以KL约束驱动策略向偏好分布优化——构成了当代对齐技术的核心骨架。OpenAI的路线侧重于以海量人工标注和多目标奖励建模持续精细化RLHF流程,在规模与工程深度上持续推进;

nmdbbzcl的博客 1065

黑马程序员—我的面试,我的学习,我的经历

文章来源:黑马程序员,黑马论坛        首先还是简单的做个自我介绍吧,我是黑马七期的一名很普通的学员,从黑马毕业有一个多月了,现在也上班了,薪水不高试用期5.6k转正7k,这次主要就是想和大家聊一聊我来黑马之前的一些想法,以及来黑马学习完以后,找工作的一些经验分享,可以给一些想要来学习,或者是正在学习,以及正在找工作的学弟、学妹们一些参考,同时也祝愿你们能够尽快

heima_28的专栏 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

黑马程序员_接口和内部类

---------------------android培训、java培训、java学习型技术博客、期待与您交流! ------------------- 今天是在传智上课的第十一天了,今天讲的内容主要是接口、Object和内部类,首先总结下接口。 一、接口具有如下几个特点: 1、接口是程序功能的扩展; 2、接口是对外暴露的规则; 3、类与接口之间是实现关系,类可以在继承一个类的时候

谢铭的博客 623

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

黑马程序员—我和我男朋友在黑马的故事,感谢黑马~~~~~~~~...

文章来源:黑马程序员,黑马论坛 (注:黑马学员发来的毕业感言)   我是一名女生,也是黑马训练营培训出来的一匹最普通的黑马,众马云集又各奔前程。现在的我已找到一份满意的7k工作。每当夕阳西下,结束了一天忙碌的工作,都会想起和他在黑马的充实而快乐的时光。我和我的男朋友来自同一个学校同一个系。本来无缘相识,因为有着共同的编程梦想先手于毕业前夕,现在的他已在搜狐上班,每月12k的工资给我们的

heima_26的专栏 1138

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

黑马程序员—因为感恩,所以我也来深圳黑马当班主任

文章来源:黑马程序员,黑马论坛

heima_26的专栏 4434

黑马程序员--一个为进入黑马云六的C++屌丝的28个日夜

首先我要告诉大家,我是一个在大学学了三年C++的人,可能你们会问我,学C++不是挺好的?干嘛突然间要重新学习java呢?况且C++以后的发展不也挺好吗?        我应该怎么回答你们呢?这也是我思考了很久的问题。我可能没办法用一两句话来回答你们,但是我想你们看完了下面这段故事,可能你们也就找到了答案。        我是一个211的本科毕业学生,学习虽然算不上十分优秀,但也算拿的过奖学金,

heima_hb5的专栏 4400

黑马程序员——内部类、异常、包

——- android培训、java培训、期待与您交流! ———-黑马程序员内部类异常包 内部类 匿名内部类 异常 Throwable中的方法 throws和throw 异常处理 自定义异常 异常细节 包package classpath 包之间的访问 四种权限 import Jar包黑马程序员——内部类、异常、包内部类 将一个类定义在另一个类的里面,对里面那个类就称为内部类(内置类,嵌套类)。 访

jmw__的专栏 675

黑马程序员-内部类总结和笔记

-------android培训、java培训、期待与您交流! ---------- 一个类里面可以定义多个内部类 JAVA中普通类不能用private修饰但是内部类可以用private修饰,当内部类在外部类的成员位置的时候。内部类在成员位置上的时候可以被成员位置上的修饰符所修饰,包括final和static 内部类的访问规则:   1,内部类可以直接访问外部类中的成员,包括私有。之...

weixin_34257076的博客 523

黑马程序员--内部类

内部类 讲一个雷定义在另一个类的里面,对立面那个类就叫做内部类,或者嵌套类。 特点,内部类可以直接访问外部类中的成员。包括私有成员。而外部类要访问内部类中的成员必须要建立内部类对象。 代码 class outer    class inner             void function(){}    } } inner内部类。

sunyonglei88的专栏 494

黑马程序员-java内部类

黑马程序员-java内部类

u010513299的专栏 666

黑马程序员-黑马,人生的一个重要转折

乡亲们and同学们:         大家好!         貌似现在感谢信是每个黑马毕业后找到工作的首要任务了!   我是5月份进的黑马,是9期的, 其实感觉从我搭上飞机,落在北京之时这一切都好像做梦似的,我是90年出生的, 属于90后了,我辍学的非常的早,在我上初中二年级的时候就辍学了。       可以说我是一个标准的小学毕业生吧,当时我16岁,在我16岁到22岁的这6年我做过很多

itheima_8182的专栏 812

黑马程序员————内部类、包、Object、scanner以及String

------- android培训、java培训、期待与您交流! ----------

qq_22043145的专栏 424

黑马程序员——JAVA笔记——内部类

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------  当描述事物,事物的内部还有事物,该事物用内部类来描述。   因为内部事物在使用外部事物的内容。 class Body {   private class XinZang {   } public void show() { new XinZang()

安安安的博客 524

黑马程序员_object类以及常见异常

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- 2. java.lang.Object   类 Object 是类层次结构的根类。Java中,所有的类,都直接或者间接继承自Object类   所有的类,都是他的子民 2.1 String

u013658379的专栏 621
上一篇: 黑马程序员_面向对象(多态)
下一篇: 黑马程序员_面向对象(异常)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值