java中常见的几种内部类,你会几个?(未完)

点击上方蓝色关注我们!

大家好,我是雄雄,今天给大家介绍的是java中的几种内部类

java中常见的几个内部类,你会几个?我会四个!

在看每个新知识点时,我们不禁有这样或者那样的疑问,比如它是什么?怎么用?带着这些疑问我们继续往下看:

它(内部类),是什么?

内部类,顾名思义就是内部的类,什么的内部?我们都知道java中基本的操作单元是类,那么在类的内部还有一个类(也可以说是类中嵌套类),这样的结构,我们就可以称这种(类中的类)为内部类。

接下来我们可以看一个简单的内部类案例,代码如下:

package org.test;//外部类
public class People {//外部类的方法public void show(String name){System.out.println("你好"+name);}//内部类class Peo {//内部类的方法public void show(String name){System.out.println("你好"+name);}}//外部类的main方法public static void main(String[] args) {//创建内部类的对象Peo p = new People().new Peo();p.show("张三");System.out.println("---------------");//调用外部类的new People().show("李四");}}

分析一下代码,我们先写了一个外部类People,在外部类中写一个show方法,并且需要一个String类型的参数,紧接着有在该类中重新声明了一个名为Peo的类(内部类),该内部类中也写了一个show方法,且需要一个Stirng类型的参数。

然后我们在外部类的main方法中,分别调用内部类与外部类的方法,运行结果为:

可见,内部类的用法并不难,下面我们来深入的看看。

java中的内部类只是java编译器的概念,对于java的虚拟机而言,它是没有java内部类的概念的,也就是说java中的内部类最后也会被编译成一个独立的class文件。

Java中的内部类可以分为四种:

  • 静态内部类

  • 成员内部类

  • 方法内部类

  • 匿名内部类

它(内部类)怎么用?

1.静态内部类:

静态内部类的声明和静态方法声明类似,就是将关键词改成了class,如下:

package org.test;//外部类
public class People {static int num;//内部类static class Peo {private static String name ;//内部类的方法public static void show(){System.out.println("数字是:"+num);System.out.println("欢迎关注:"+name+",嘿嘿!");}}//main方法public static void main(String[] args) {new People().num = 888;Peo.name = "雄雄的小课堂";Peo.show();}}

分析代码:

我们在外部类People中声明了一个int类型的num,在内部类中声明了name属性和show方法。然后在主体main方法中调用,其结果为:

总结: 静态内部类可以直接访问外部的静态属性和方法,但是不可访问外部类的实例属性和方法。

2.成员内部类:

将静态内部类的static关键词去掉就成了成员内部类,代码如下:

package org.test;//外部类
public class People {private static int age ;String address ="山东济南";//内部类class Peo {private  String name ;//内部类的方法public  void show(){System.out.println("年龄是:"+age);System.out.println("地址是:"+address);System.out.println("名称是:"+name+",嘿嘿!");}}//main方法public static void main(String[] args) {Peo p = new People().new Peo();People.age = 18;p.name = "雄雄的小课堂";p.show();}}

运行结果为:

显而易见,成员内部类中除了可以调用外部类中的私有的静态属性外,还可以调用外部类的实例属性。

下面还有一个问题,即:当外部类中的属性与内部类中的属性重名时,在内部类中如何区分使用该属性呢,代码如下:

//外部类
public class People {//年龄private static int age ;String address ="山东济南";//内部类class Peo {//姓名private  String name ;//年龄private int age = 28; //内部类和外部类重名的属性//内部类的方法public  void show(){System.out.println("年龄是:"+age);System.out.println("年龄是:"+age);System.out.println("地址是:"+address);System.out.println("名称是:"+name+",嘿嘿!");}}//main方法public static void main(String[] args) {Peo p = new People().new Peo();People.age = 18;p.name = "雄雄的小课堂";p.show();}
}

大家猜想一下age的值多少?18?28?还是一个18一个28?运行结果为:

造成这样的结果原因是什么呢?从代码中不难看的出来,age结果的值是内部类的值,并非外部类的值,那么如果我想在内部类中使用外部类的属性,我应该如何使用呢?

很简单,我们只需在该属性的前面加上“类名.this.属性名”即可,案例中我们就可以这样写:

运行结果:

今天就先分享到这里,剩余的“方法内部类”和“匿名内部类”我们明天接着讲。

支持作者

赞赏就不用啦,生活都不易,右下角的“在看/赞”点一下,如果感觉文章不错,记得分享到朋友圈让更多人知道!

粉丝群

▲每天都会有不定额的红包发放,了解公众号文章、抽奖最新资讯。

往期推荐

java中你知道的这四种代码块吗?

切记!构造函数里面别一定不要初始化其他类,踩过坑的都知道

浅谈我的读书史

浅谈我的读书史(2)

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

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

相关文章

通俗理解信息熵

转载自 通俗理解信息熵 通俗理解信息熵 前段时间德川和我讲解了决策树的相关知识,里面德川说了一下熵,今天整理了一下,记录下来希望对大家理解有帮助~ 1、信息熵的公式 先抛出信息熵公式如下: 其中代表随机事件X为的概率&…

.NET Core 2.0 Preview 2为开发人员带来改进

Microsoft发布了.NET Core 2第二个预览版(Preview 2),该版本可用于Mac OS X、Linux和Windows平台。Preview 2首次给出了对所有平台上各种软件包和安装程序的统一命名模式。所有的运行时文件将以"dotnet-运行时名称”命名,而S…

java中,剩下的这两个内部类不太好理解!

点击上方蓝色关注我们!大家好,我是雄雄,今天我们接着昨天的分享,将剩余的两个内部类(方法内部类和匿名内部类)结束掉,这两个内部类都不太好理解。昨天的推文:java中常见的几种内部类…

【jzoj】2018.2.3NOIP普及组——D组模拟赛

前言 万年D组系列… 正题 题目1:数池塘(jzoj1898) 有一个地方有一些积水,连着的积水是一个池塘,求池塘数。 输入 第1行:由空格隔开的两个整数:N和M 第2..N1行:每行M个字符代表…

通俗理解条件熵

转载自 通俗理解条件熵 通俗理解条件熵 前面我们总结了信息熵的概念通俗理解信息熵,这次我们来理解一下条件熵。 1、信息熵以及引出条件熵 我们首先知道信息熵是考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望。公式如下: 我…

WebAssembly:随风潜入夜

What? WebAssembly 是一种二进制格式的类汇编代码,可以被浏览器加载和并进一步编译成可执行的机器码,从而在客户端运行。它还可以作为高级语言的编译目标,理论上任何语言都可以编译为 WebAssembly。 我们知道汇编语言就是机器码的…

让java的多重继承成为现实!

点击上方蓝色关注我们!大家好,我是雄雄,前两天给大家说了说java中的四种内部类,推文分别为:静态内部类和成员内部类方法内部类和匿名内部类在内部类的基础上,我们来看看今天的知识点儿。众所周知&#xff0…

通俗理解决策树算法中信息增益的

转载自 通俗理解决策树算法中信息增益的 通俗理解决策树算法中的信息增益 在决策树算法的学习过程中,信息增益是特征选择的一个重要指标,它定义为一个特征能够为分类系统带来多少信息,带来的信息越多,说明该特征越重要&#x…

DDD理论学习系列(6)-- 实体

1.引言 实体对应的英语单词为Entity。提到实体,你可能立马就想到了代码中定义的实体类。在使用一些ORM框架时,比如Entity Framework,实体作为直接反映数据库表结构的对象,就更尤为重要。特别是当我们使用EF Code First时&#xf…

班级日常 | 一天一瞬间!

点击上方蓝色关注我们!欢迎来到今天的“一天一瞬间”专栏在学习word操作时,同学们的兴趣还是较高的,但是,比起“一天一个黑科技”来说,还是差了许多!前面两天都是学的一些简单的DOS命令,比如进某…

ASP.NET Core Web 资源打包与压缩

本文将介绍使用的打包和压缩的优点,以及如何在ASP.NET Core应用程序中使用这些功能。 概述 在ASP.Net中可以使用打包与压缩这两种技术来提高Web应用程序页面加载的性能。通过减少从服务器请求的次数和减少资源文件的体积来提高加载性能。 打包是一地将多个文件&a…

班级日常分享 | 一天一瞬间!

点击上方蓝色关注我们!介于最近同学们的学习劲头十足的样子,我和丁老师商量决定晚上不布置作业,看一部电影放松放松!昨晚下晚自习后,零零散散的还有一部分同学在教室里面学习,值班老师都催促多次&#xff0…

句法分析(syntactic parsing)在NLP领域的应用是怎样的

转载自 句法分析(syntactic parsing)在NLP领域的应用是怎样的 句法分析(syntactic parsing)在NLP领域的应用是怎样的? 文章整理自郭江师兄问题回答(被收录于知乎编辑推荐)!已取得…

新的学期、新的开始、新的付出、新的收获!

点击上方蓝色关注我们!本文原创:王晓丹同学初次,我漫步在静静的校园,深情的黄昏,显得格外惹人喜爱。哇!那是什么?我情不自禁的喊了出来,一颗石榴树 ,引起了我满满的回忆&…

ASP.NET Core Web API 最小化项目

ASP.NET Core中默认的ASP.NET Core 模板中有Web API 模板可以创建Web API项目。 有时,只需要创建一个API,不需要关心Razor,本地化或XML序列化。通过删除无用的NuGet软件包和代码,可以提高 API 的加载时间并减少部署包大小。 新建…

LinkedHashSet VS HashSet

LinkedHashSet的使用 LinkedHashSet作为HashSet的子类,在添加数据的同时,每个数据还维护了两个引用,记录此数据前一个 数据和后一个数据。 优点:对于频繁的遍历操作,LinkedHashSet效率高于HashSet

隐马尔科夫模型-基本模型与三个基本问题

转载自 隐马尔科夫模型-基本模型与三个基本问题 隐马尔科夫模型-基本模型与三个基本问题 这次学习会讲了隐马尔科夫链,这是一个特别常见的模型,在自然语言处理中的应用也非常多。 常见的应用比如分词,词性标注,命名实体识别等…

日常技术分享 : 一定要注意replcaceAll方法,有时候会如你所不愿!

点击上方蓝色关注我们!今天,踩过了一个雷,特此整理了一下,以防大家也被中招!事情是这样的,在做一个项目时,需要用到String类的replcaceAll方法,可以这么说,该方法就是替换…

在微服务中如何管理数据

来自Stitch Fix团队的工程副总裁Randy Shoup在QCon纽约2017会议上讨论了如何在基于微服务的应用中管理数据和隔离持久化。他还介绍了将事件(Event)作为微服务的第一类构造。他介绍自己的团队将机器学习技术应用到了业务的各个组成部分,比如购…