InnerClass内部类

1,内部类概述

  • 定义:把A类定义在B类内部,则A类是内部类。如下所示:
  • class Outer1{外部类String name1;public void show(){System.out.println("Outer1.show()"+new Inner1().name);}class Inner1{//内部类
            String name;public void fun(){System.out.println("Outer1.Inner1.fun()"+name1);}}
    }
  • 内部类的访问特点
    • 内部类可以直接访问外部类的成员,包括私有。
    • 外部类要访问内部类的成员或功能,则必须创建内部类的对象。
  • 按照内部类在类中定义的位置不同,可以分为如下两种格式:
    • 成员位置(成员内部类)
    • 局部位置(局部内部类)

2,成员内部类

  • 一般内部类就是不让外部访问的,但并不是不可以被访问(但你非得。。。)
  • 被静态修饰的成员内部类只能访问外部类的静态成员
  • 内部类被静态修饰后的方法
    • 非静态方法:外部类名.内部类名 对象名 = new 外部类名.内部类名();
    • 静态方法  :上面创建的对象访问,或者 外部类名.内部类名.方法名();(类比,被静态修饰的类既可以直接通过类名访问其成员变量,也可以通过new出对象来访问)
  • //成员内部类的以上所有情况
    class
    Outer1{private String name1;static String string;class Inner2{public void show(){//内部类可以直接访问外部类的所有成员System.out.println("Outer1.show()"+name1);}}static class Inner1{String name;public void fun(){//被静态修饰的内部类,只能访问外部类的静态成员//因为静态修饰的类,一开始就会被加载进来,所以如果内部有外部成员,则必须是静态的System.out.println("Outer1.Inner1.fun()"+name1);//访问外部非静态成员出错System.out.println("Outer1.Inner1.fun()"+string);//访问外部静态成员正确 }} }
  • 面试的例子,如下
  • class Outer1 {public int num = 10;class Inner {public int num = 20;public void show() {int num = 30;System.out.println(num);System.out.println(this.num);System.out.println(Outer1.this.num );}}
    }
    //在控制分别输出:30,20,10
    public class TestMain2 {public static void main(String[] args) {// TODO Auto-generated method stub
            Outer1.Inner inner = new Outer1().new Inner();inner.show();}}

     

3,局部内部类 

  • 局部内部类访问局部变量时,局部变量必须被final修饰(JDK1.8中局部变量可以不被final显式修饰,但还是有final属性的亲测正确。)
  • 原因:因为局部变量会随着方法的调用完毕而消失,这个时候,局部对象并没有立马从堆内存中消失,还要使用那个变量。为了让数据还能继续被使用,就用fianl修饰,这样,在堆内存里面存储的其实是一个常量值。
  • 局部内部类只能在局部方法内部使用。详细代码如下
    • class Outer1{private String name1;static String string;public void show(){int imkk=0;//局部变量String string = "OK?";class Inner2{//局部内部类public void show(){System.out.println("Outer1.show()"+string);//
                      System.out.println("Outer1.show()"+imkk);//编译失败是因为i不是final修饰的,JDK1.8可以通过
           i=3;//会提示错误,说明还是有final属性的。
      }}new Inner2().show(); } }public class TestMain1 {String name;public static void main(String[] args) {// TODO Auto-generated method stubOuter1 outer1 = new Outer1();outer1.show();} }

4,匿名内部类

  • 就是内部类的简化写法(在安卓开发中常用匿名内部类,节省内存空间)
  • 前提:存在一个类或者接口(这里的类可以是具体类也可以是抽象类。)
  • 格式:new 类名或者接口名() {重写方法;}
  • 本质:是一个继承了类或者实现了接口的子类匿名对象
  • 例子如下所示:
  • //匿名内部类
    interface Listener{//接口public void func1();public void func2();}public class TestMain3_niming {public static void main(String[] args) {// TODO Auto-generated method stubnew  Listener() {@Overridepublic void func1() {System.out.println("func1");}            @Overridepublic void func2() {System.out.println("func2");}        } ;}
    }

     

  

 

 

 

 





转载于:https://www.cnblogs.com/yidijimao/p/5232356.html

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

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

相关文章

表单内如何直接贴图而不用上传图片_表单如何添加图片?

表单其实就是我们平常经常看到的收集信息的框框,如姓名、电话等,当然易表单就远不止这些哦,还可制作调查问卷,报名登记、投票评选和考试测评。平时大家都擅长于制作表单的文字内容,实际上表单里边添加一些图片会让表单…

Android应用的安全的攻防之战

一、前言 在前两篇破解的文章中,我们介绍了如何使用动态调试来破解apk,一个是通过调试smali源码,一个是通过调试so代码来进行代码的跟踪破解,那么今天我们就这两篇文章的破解方法,来看看Android中开发应用的过程中如何…

标准正态分布表_表达矩阵的归一化和标准化,去除极端值,异常值

我们阅读量破万的综述:RNA-seq这十年(3万字长文综述)给粉丝朋友们带来了很多理解上的挑战,所以我们开辟专栏慢慢介绍其中的一些概念性的问题,上一期:RNA-seq的counts值,RPM, RPKM, FPKM, TPM 的异同在数据挖掘过程&…

html input p,我想在input.phtml中创建下拉框。 (不要使用zend_form)

案例1:在你看来:echo $this->formSelect(name, Option 1, array(),array(Option 1, Option 2));1 ARG:选择,第二个arg的名称:值;第三个参数:attributs,第4 ARG:选择案例2&#xf…

HTML5学习

1. HTML5是W3C和WHCTWG合作的结果。 2. W3C 指 World Wide Web Consortium,万维网联盟。 3. HTML5新规则: 新特性应该基于 HTML、CSS、DOM 以及 JavaScript。减少对外部插件的需求(比如 Flash)更优秀的错误处理更多取代脚本的标记…

计算机网络关于封装成帧题目,上海第二工业大学-计算机网络通信期中试卷答案...

上海第二工业大学 (试卷编号: )2014-2015学年第2学期 计算机网络与通信 期中考试试卷姓名: 学号: 班级: 成绩:一、 填空题 (每空1分,共18分)1. 当前广泛提及的三网融合中的三网分别是 电信网络 、 电视网络…

python全套学习方法_python学习方法总结(内附python全套学习资料)

种一棵树最好的时间是十年前,第二好的时间是现在(文末有资料获取方法)先聊聊互联网转行那些事儿很多人是小白,想从事或转行互联网,想以python为切入口,那么恭喜你,这可能是你离互联网工作最捷径的一条道路了&#xff0…

2016.03.04,英语,《Vocabulary Builder》Unit 04

vor: 来自拉丁动词vorare,指to eat,-ivorous指吃某种食物的eater。carn肉,肉欲vore吃→吃肉的;carnival狂欢节,谢肉节voracious a 狼吞虎咽的(voracious多…..的--吃多的) voracity n 贪食(voracilty) devour v 吞吃&a…

计算机培训简报膜报,信息技术培训工作简报(第4期).doc

信息技术培训工作简报(第4期)东原香山实验小学 (第四期) 2016年3月1日信息技术培训研修总结通过培训学习,使我进一步地掌握了有关现代信息技术的知识,提高了认识。随着计算机、多媒体、现代通讯网络为代表的信息技术的迅猛发展,信息技术已经渗透到了教育…

微星主板超频_内存超频能力依旧拔群!微星MEG Z490 ACE主板评测

一、前言:内存超频首选的新板子来了一直以来,微星主板都以强悍的内存超频能力而著称,而高频内存对于许多游戏带来的提升都是肉眼可见。随着全新Intel 10代酷睿处理器的上市,微星的MEG系列的Z490主板会给大家带来哪些惊喜呢&#x…

人工智能是利用电子计算机模拟人类智力,第一章 计算机系统.ppt

多媒体计算机 扫描仪 DVD光盘及DVD 光盘刻录机 数码像机 投影仪 常用设备 基本操作 冷启动 热启动 RESET方式 启动计算机 顺序: 应用程序 ? 主机 ? 外设 ? 电源 (P27) 关闭计算机 指向、单击、双击、右击、拖放 (P30) 鼠标操作 键盘分布、功能、击键姿势 (P30~31) 键盘操作 …

g++ 内存不够_手机内存老是不足?这三招,让你马上腾出12个G

不知道朋友们遇到手机卡慢、空间不足的第一反应是什么?A:换个手机。B:内存满了,找清理软件狂删啊!使用智能手机的人大家肯定和小编一样恋旧,觉得换手机很麻烦所以不断尝试各种清理软件,清理手机…

ubuntu - 如何以root身份使用图形界面管理文件?

nautilus 是gnome的文件管理器,但是如果不是root账号下,权限受限,我们可以通过以下方式以root权限使用! 一,快捷键“ctrlaltt”,调出shell。 二,在shell中输入:“sudo nautilus ”,就…

防灾科技学院计算机组成原理,防灾科技学院计算机组成原理复习材料1

一、单项选择题:(每题1分,共20分)1、目前我们所说的个人台式商用机属于。A、巨型机B、中型机C、小型机D、微型机2、下列数中最大的数是。A、(10011001)2B、(227)8C、(98)16D、(152)103、在小型或微型计算机里,普遍采用的字符编码是。A、BCD码…

stringbuilder寻找字符串位置可能存在多个 java_Java 语言基础amp;String

Java 语言基础String 字符串的不可变性 定义一个字符串使用变量来赋值变量 String s2 s; s2 保存了相同的引用值, 因为他们代表同一个对象 字符串连接 s s.concat("ef"); s 中保存的是一个重新创建出来的 string 对象的引用 总结一旦一个 str…

cogs 547:[HAOI2011] 防线修建

★★★☆ 输入文件:defense.in 输出文件:defense.out 简单对比                      时间限制:1 s 内存限制:128 MB 题目描述: 近来A国和B国的矛盾激化,为了预防不测&#…

人工智能和计算机软件,人工智能在计算机软件方面有什么应用?

人工智能(Artificial Intelligence) ,英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似…

pq分解法中b’怎么求_14.初中数学:二元一次方程组,加减消元法怎么解?视频有详细解题步骤...

欢迎您来到方老师数学课堂,请点击上方蓝色字体,关注方老师数学课堂。所有的视频内容,全部免费,请大家放心关注,放心订阅。初中数学:二元一次方程组,加减消元法怎么解?视频有详细解题…

hihoCoder 1114 小Hi小Ho的惊天大作战:扫雷·一 最详细的解题报告

题目来源:小Hi小Ho的惊天大作战:扫雷一 解题思路:因为只要确定了第一个是否有地雷就可以推算出后面是否有地雷(要么为0,要么为1,如果不是这两个值就说明这个方案行不通),如果两种可能…

win8计算机可用内存不足,Win8.1玩游戏提示计算机内存不足,Win8.1内存不足怎么办?...

Win8.1玩游戏提示计算机内存不足,Win8.1内存不足怎么办?有朋友使用Win8.1系统,这一段时间,在玩游戏(如孤岛危机3、鬼泣4)过程中,频繁出现下面提示框:关闭程序以防止信息丢失计算机的内存不足。请保存文件并关闭这些程序Windows将…