Java实例内部类

实例内部类是指没有用 static 修饰的内部类,有的地方也称为非静态内部类。示例代码如下:

public class Outer {class Inner {// 实例内部类}
}

上述示例中的 Inner 类就是实例内部类。实例内部类有如下特点。

1 . 在外部类的静态方法和外部类以外的其他类中,必须通过外部类的实例创建内部类的实例。

public class Outer {class Inner1 {}Inner1 i = new Inner1(); // 不需要创建外部类实例public void method1() {Inner1 i = new Inner1(); // 不需要创建外部类实例}public static void method2() {Inner1 i = new Outer().new inner1(); // 需要创建外部类实例}class Inner2 {Inner1 i = new Inner1(); // 不需要创建外部类实例}
}class OtherClass {Outer.Inner i = new Outer().new Inner(); // 需要创建外部类实例
}

2 . 在实例内部类中,可以访问外部类的所有成员。

public class Outer {public int a = 100;static int b = 100;final int c = 100;private int d = 100;public String method1() {return "实例方法1";}public static String method2() {return "静态方法2";}class Inner {int a2 = a + 1; // 访问public的aint b2 = b + 1; // 访问static的bint c2 = c + 1; // 访问final的cint d2 = d + 1; // 访问private的dString str1 = method1(); // 访问实例方法method1String str2 = method2(); // 访问静态方法method2}public static void main(String[] args) {Inner i = new Outer().new Inner(); // 创建内部类实例System.out.println(i.a2); // 输出101System.out.println(i.b2); // 输出101System.out.println(i.c2); // 输出101System.out.println(i.d2); // 输出101System.out.println(i.str1); // 输出实例方法1System.out.println(i.str2); // 输出静态方法2}
}

示:如果有多层嵌套,则内部类可以访问所有外部类的成员。

3 . 在外部类中不能直接访问内部类的成员,而必须通过内部类的实例去访问。如果类 A 包含内部类 B,类 B 中包含内部类 C,则在类 A 中不能直接访问类 C,而应该通过类 B 的实例去访问类 C。

4 . 外部类实例与内部类实例是一对多的关系,也就是说一个内部类实例只对应一个外部类实例,而一个外部类实例则可以对应多个内部类实例。

如果实例内部类 B 与外部类 A 包含有同名的成员 t,则在类 B 中 t 和 this.t 都表示 B 中的成员 t,而 A.this.t 表示 A 中的成员 t。

public class Outer {int a = 10;class Inner {int a = 20;int b1 = a;int b2 = this.a;int b3 = Outer.this.a;}public static void main(String[] args) {Inner i = new Outer().new Inner();System.out.println(i.b1); // 输出20System.out.println(i.b2); // 输出20System.out.println(i.b3); // 输出10}
}

5)在实例内部类中不能定义 static 成员,除非同时使用 final 和 static 修饰。

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

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

相关文章

mysql table fetching_MySQL死锁分析一例

Tomcat日志报死锁错误,show innodb status获取死锁信息:------------------------LATEST DETECTED DEADLOCK------------------------181107 9:30:46*** (1) TRANSACTION:TRANSACTION 2067C318, ACTIVE 16 sec fetching rowsmysql tables in use 1, lock…

excel工具箱_WPS搬来救兵智能工具箱,强大到Excel没有还手之力

EXCEL不加班眼见Excel连胜2局,WPS慌了,搬来救兵智能工具箱,这个神器,所到之处,问题瞬间解决。这智能工具箱究竟是何方宝物,强大到Excel没有还手之力!Excel2016的闪电填充确实牛逼,不…

目标检测初始准备环节-安装包所需镜像源网址(以Labelimg为例)

目标检测安装labelimg对自己的数据集进行标记(windows系统) pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple镜像源可以替换为: 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://m…

mysql cve 2016 3521_MySQL-based databases CVE -2016-6663 本地提权

date: 2016/11/3author: dlive0x01 漏洞原文翻译水平不高求轻喷感觉作者在写文章的时候有些地方描述的也不是特别清楚,不过结合poc可以清晰理解漏洞利用过程0x04漏洞利用过程总结给出了清晰的漏洞利用过程,结合poc食用效果更佳# http://legalhackers.com…

Java静态内部类

静态内部类是指使用 static 修饰的内部类。示例代码如下: public class Outer {static class Inner {// 静态内部类} }上述示例中的 Inner 类就是静态内部类。静态内部类有如下特点。 1 . 在创建静态内部类的实例时,不需要创建外部类的实例。 public …

oracle em界面监控出来的奇怪图像_海康poe主机断电重启后不出图像,显示用户被锁定...

海康poe主机断电重启后不出图像,显示用户被锁定前段时间给客户装了一套海康poe主机的监控系统,摄像头也是海康的130万的poe摄像头,客户突然打电话来说,断电重启后监控图像不出来了,我很奇怪,海康的监控系统也做过很多&…

论文图标visio等字体对应

八号=5磅(5pt) (5/72)*966.67 6px 七号=5.5磅 (5.5/72)*967.3 7px 小六=6.5磅 (6.5/72)*968.67 8px 六号=7.5磅 (7.5/72)*9610px 小五=9磅 (9/72)*9612px 号=10.5磅 (10.5/72)*9614px 小四=12磅…

harbor重置mysql密码_Harbor密码重置 密码修改 admin密码重置

Harbor密码重置harbor现在是使用postgresql 数据库了。不再支持mysql,网上有N多重置Mysql密码的,可以略过了。我密码错了默认的Harbor12345 修改为: RedHat12345 然后忘记密码死活登陆不上。卸载重新重新安装也不可以,原因是没有删…

Java局部内部类

局部内部类是指在一个方法中定义的内部类。示例代码如下: public class Test {public void method() {class Inner {// 局部内部类}} }局部内部类有如下特点: 1 . 局部内部类与局部变量一样,不能使用访问控制修饰符(public、pri…

mysql 数据迁移_CentOS7迁移Mysql数据库文件

1、查看Mysql安装路径cat /etc/my.cnf2、查看数据盘路径df3、数据盘下创建mysql数据目录,设置目录磁盘写入权限cd /mnt1/xfrb_database/mkdir mysqlchmod -R 777 /mnt1/xfrb_database/mysql/ls -l -a目录创建和权限设置成功。4、停止Mysql服务,拷贝Mysql…

mysql json类型最大长度限制_MySQL json 数据类型

必须要5.7以上版本才能使用 写在开头 mysql json 的功能很强大,只是用来当一个储存数据的字段 就没什么意义了。 使用proto做交互的话,只要JSON 写得好 用proro.Unmarshal() 就可以很方便的转换类型 可以精简很多代码 JSON path 是以 $ 开头,之后就是JSON的层级使用。$ $[0]…

火狐浏览器title过长显示不全_浏览器渲染

简述浏览器的内核是指支持浏览器运行的最核心的程序,分为两个部分的,一是渲染引擎,另一个是JS引擎。渲染引擎在不同的浏览器中也不是都相同的。目前市面上常见的浏览器内核可以分为这四种:Trident(IE)、Gec…

mysql建表指定引擎_请教mysql建表指定data directory 报错

--如下:语句1... create table test(id int) enginemyisam data directory/tmp index directory/tmp/abc;在目录/tmp /tmp/abc 可以执行成功[mysqllocalhost tmp]$ pwd/tmpdrwxrwxr-x 2 mysql mysql 4096 Mar 30 14:37 abcmysql> create table test(id int) enginemyisam d…

查看目录是否为内存盘_Linux buff/cache内存释放

free 命令 产看内存占用一览:free 参数:今天部署项目的时候,发现pm2命令卡顿不能正确执行,一开始以为是pm2版本的问题,后面升级pm2到最新版本也没有解决问题。既然和pm2本身没有关系,那么就从其它地方检查&…

java用内部类实现多重继承

最常见的实现多重继承的方式,是implements interface1,interface2,interface3… 也可以通过多个内部类extends多个抽象类。 示例如下 public class Father {public int strong(){return 9;} }public class Mother {public int kind(){return 8;} }public class S…

python爬虫找工作要掌握什么_python爬虫实战:判断招聘信息的存在

在找工作的时候,我们会选择上网查询招聘的信息,或者是通过一些招聘会进行现场面试。但由于信息更新不及时,有一些岗位会出现下架的情况,如果我们不注意的话,可能就扑了空。在时间上耽误了不说,面试的信息也…

kafka是存储到本地磁盘么_Kafka 中的消息存储在磁盘上的目录布局是怎样的?

Kafka 中的消息是以主题为基本单位进行归类的,各个主题在逻辑上相互独立。每个主题又可以分为一个或多个分区,分区的数量可以在主题创建的时候指定,也可以在之后修改。每条消息在发送的时候会根据分区规则被追加到指定的分区中,分…

ps efgrep mysql 命令_mysql常用管理命令

安装直接yum install mysql-serveryum install mysqlservice mysqld start //启动mysql服务登录mysql -u root -p初次设置密码set password password(qwer,1234);flush privileges;GRANT ALL PRIVILEGES ON *.* TO rootlocalhost IDENTIFIED BY MyPassword WITH GRANT OPTION;F…

英特尔全部cpu列表_Debian发布安全更新 以修复近期披露的英特尔MDS安全漏洞

Debian项目团队今天发布了针对英特尔微代码固件的新安全更新,以修复近期披露的英特尔MDS(微架构数据采样)漏洞。今年5月14日,英特尔披露了影响旗下诸多英特尔微处理器系列的四个新安全漏洞,不过随后很快发布了缓解这些漏洞的安全升级&#xf…

if or函数套用_IF函数和OR函数的套用我想利用IF函数和 – 手机爱问

1 设函数f(x)在(-∞,∞)上为减函数,则( )A f(a)大于f(2a)B f(a^2)小于f(a)C f (a^2a)小于f(a)D f(a^21)小于f(a)请求解题过程!!感谢!2 函数f(x)x^22(a-1)x2在区间(-∞,4】上单调递减&#xff0c…