- 浏览: 1222572 次
- 性别:
- 来自: 荆州
文章分类
- 全部博客 (396)
- Android 基础 (72)
- Java 基础 (42)
- Android(动画效果) (26)
- Android(自定义组件) (13)
- Android(手机服务) (38)
- Android(网络相关) (27)
- Android(多媒体) (12)
- Android(小技巧) (30)
- Android(用户界面) (39)
- 基础概念 (24)
- Android组件学习 (21)
- Android数据库相关 (11)
- 生活杂谈 (10)
- 调试技巧部分 (8)
- Sql Server相关 (1)
- Android(xml相关) (2)
- Android 开发 (12)
- 韩语学习 (4)
- Mac添加环境变量的三种方法 (1)
- iPhone开发 (1)
- Android Studio (1)
最新评论
-
ppfbsar:
下载网络文件到SD卡上 -
851228082:
好文!彻底理解单类型导入与按需导入的区别了。还有一点可以通过 ...
谈java的导入(import) -
麦田的设计者:
老乡啊
sqlite 数据库保存图片 -
sf_dream:
我要是读写list、map之类的集合呢
ObjectOutputStream和ObjectInputStream类的学习 -
xfyunyun:
博主,请问webview加载html字符串时怎么进行缓存处理呢 ...
WebView使用总结2(加载HTML内容形式的String)
我是一个java基础不太好的人,现在绝大多数人都是利用自己的java知识涉足android,而我发觉我自己是在利用android学习java:
所以在下班待在家的时候进一步棍固自己惨兮兮的java:
下面要写的是对java内部类学习的部分,希望写在这里跟大家一起分享:
1.定义:放在一个类的内部的类我们就叫内部类
2.作用:
1.内部类可以很好的实现隐藏
一般的非内部类,是不允许有 private 与protected权限的,但内部类可以
2.内部类拥有外围类的所有元素的访问权限
3.可是间接实现多重继承
4.可以避免修改接口而实现同一个类中两种同名方法的调用。
3.实现隐藏
平时我们对类的访问权限,都是通过类前面的访问修饰符来限制的,一般的非内部类,是不允许有 private 与protected权限的,但内部类可以,所以我们能通过内部类来隐藏我们的信息。可以看下面的例子
接口
具体类:
上面InsideClass是内部类,访问修饰符是private
客户端程序
从这段代码里面我只知道Example的getIn()方法能返回一个InterfaceTest 实例但我并不知道这个实例是这么实现的。而且由于InsideClass 是private的,所以我们如果不看代码的话根本看不到这个具体类的名字,所以说它可以很好的实现隐藏。
2.可以无条件地访问外围类的所有元素
从上面类中name这个变量是在TagBean里面定义的私有变量。这个变量在内部类中可以无条件地访问System.out.println(name);
3.可以实现多重继承
个人认为它是内部类存在的最大理由之一。正是由于他的存在使得Java的继承机制更加完善。大家都知道Java只能继承一个类,它的多重继承在我们没有学习内部类之前是用接口来实现的。但使用接口有时候有很多不方便的地方。比如我们实现一个接口就必须实现它里面的所有方法。而有了内部类就不一样了。它可以使我们的类继承多个具体类或抽象类。大家看下面的例子。
类一
类二
类三
注意看类三,里面分别实现了两个内部类 test1,和test2 ,test1类又继承了Example1,test2继承了Example2,这样我们的类三MainExample就拥有了Example1和Example2的方法和属性,也就间接地实现了多继承。
四、 避免修改接口而实现同一个类中两种同名方法的调用。
大家假想一下如果,你的类要继承一个类,还要实现一个接口,可是你发觉你继承的类和接口里面有两个同名的方法怎么办?你怎么区分它们??这就需要我们的内部类了。看下面的代码
接口
类 MyIncrement
两个方法都是一样的。在看下面这个类要继承这两个类
如果不用内部类
increment()这个方法是属于覆盖MyIncrement这里的方法呢?还是Incrementable这里的方法。我怎么能调到MyIncrement这里的方法?显然这是不好区分的。而我们如果用内部类就很好解决这一问题了。看下面代码:
我们可以用内部类来实现接口,这样就不会与外围类的方法冲突了
所以在下班待在家的时候进一步棍固自己惨兮兮的java:
下面要写的是对java内部类学习的部分,希望写在这里跟大家一起分享:
1.定义:放在一个类的内部的类我们就叫内部类
2.作用:
1.内部类可以很好的实现隐藏
一般的非内部类,是不允许有 private 与protected权限的,但内部类可以
2.内部类拥有外围类的所有元素的访问权限
3.可是间接实现多重继承
4.可以避免修改接口而实现同一个类中两种同名方法的调用。
3.实现隐藏
平时我们对类的访问权限,都是通过类前面的访问修饰符来限制的,一般的非内部类,是不允许有 private 与protected权限的,但内部类可以,所以我们能通过内部类来隐藏我们的信息。可以看下面的例子
接口
package com.edison; public interface Incrementable { void increment(); }
具体类:
package com.edison; public class Example { private class InsideClass implements InterfaceTest { public void test() { System.out.println("这是一个测试"); } } public InterfaceTest getIn() { return new InsideClass(); } }
上面InsideClass是内部类,访问修饰符是private
客户端程序
package com.edison; public class TestExample { public static void main(String args[]) { Example a=new Example(); InterfaceTest a1=a.getIn(); a1.test(); } }
从这段代码里面我只知道Example的getIn()方法能返回一个InterfaceTest 实例但我并不知道这个实例是这么实现的。而且由于InsideClass 是private的,所以我们如果不看代码的话根本看不到这个具体类的名字,所以说它可以很好的实现隐藏。
2.可以无条件地访问外围类的所有元素
package com.edison; public class TagBean { private String name="edison"; private class InTest { public InTest() { System.out.println(name); } } public void test() { new InTest(); } public static void main(String args[]) { TagBean bb=new TagBean(); bb.test(); } }
从上面类中name这个变量是在TagBean里面定义的私有变量。这个变量在内部类中可以无条件地访问System.out.println(name);
3.可以实现多重继承
个人认为它是内部类存在的最大理由之一。正是由于他的存在使得Java的继承机制更加完善。大家都知道Java只能继承一个类,它的多重继承在我们没有学习内部类之前是用接口来实现的。但使用接口有时候有很多不方便的地方。比如我们实现一个接口就必须实现它里面的所有方法。而有了内部类就不一样了。它可以使我们的类继承多个具体类或抽象类。大家看下面的例子。
类一
package com.edison; public class Example1 { public String name() { return "liutao"; } }
类二
package com.edison; public class Example2 { public int age() { return 25; } }
类三
package com.edison; public class MainExample { private class test1 extends Example1 { public String name() { return super.name(); } } private class test2 extends Example2 { public int age() { return super.age(); } } public String name() { return new test1().name(); } public int age() { return new test2().age(); } public static void main(String args[]) { MainExample mi=new MainExample(); System.out.println("姓名:"+mi.name()); System.out.println("年龄:"+mi.age()); } }
注意看类三,里面分别实现了两个内部类 test1,和test2 ,test1类又继承了Example1,test2继承了Example2,这样我们的类三MainExample就拥有了Example1和Example2的方法和属性,也就间接地实现了多继承。
四、 避免修改接口而实现同一个类中两种同名方法的调用。
大家假想一下如果,你的类要继承一个类,还要实现一个接口,可是你发觉你继承的类和接口里面有两个同名的方法怎么办?你怎么区分它们??这就需要我们的内部类了。看下面的代码
接口
package com.edison; public interface Incrementable { void increment(); }
类 MyIncrement
package com.edison; public class MyIncrement { public void increment() { System.out.println("Other increment()"); } static void f(MyIncrement f) { f.increment(); } }
两个方法都是一样的。在看下面这个类要继承这两个类
如果不用内部类
package com.edison; public class Callee2 extends MyIncrement implements Incrementable { public void increment() { //代码 } }
increment()这个方法是属于覆盖MyIncrement这里的方法呢?还是Incrementable这里的方法。我怎么能调到MyIncrement这里的方法?显然这是不好区分的。而我们如果用内部类就很好解决这一问题了。看下面代码:
package com.edison; public class Callee2 extends MyIncrement { private int i=0; private void incr() { i++; System.out.println(i); } private class Closure implements Incrementable { public void increment() { incr(); } } Incrementable getCallbackReference() { return new Closure(); } }
我们可以用内部类来实现接口,这样就不会与外围类的方法冲突了
发表评论
-
ArrayList添加add方法效率
2013-05-09 19:24 1578public static void main(Strin ... -
Java设计模式之组合模式(Composite)
2012-11-16 11:08 13861Composite模式定义: 将对象以树形结构 ... -
HashMap用法熟悉
2012-11-11 23:43 1438HashMap排列没有按一定规则示例代码: public ... -
谈java的导入(import)
2012-06-10 16:53 1753单类型导入(single-type-import),例如imp ... -
TCP和UDP协议理解
2011-12-04 21:32 1460我们学习过什么是 ... -
华为的一道面试题
2011-11-01 10:26 1627代码如下: package com.ex; publ ... -
Java中静态变量的初始化问题
2011-10-24 11:04 10768/** * java中的内存有一块地址叫"静态代 ... -
Java引用了解
2011-10-16 16:29 1209正常来说,传统的JAVA引用,如 public ... -
Java中的抽象类和接口的区别
2011-08-21 08:47 1171Java语言中, abstract class 和in ... -
谈谈final, finally, finalize的区别
2011-08-20 10:37 1283final—修饰符(关键字)如果一个类被声明为fi ... -
Java中重载和重写的区别
2011-08-20 10:17 1141这个问题已经研究了好多遍了,总是忘记,就整理下来加深印象: ... -
Hashtable和HashMap
2011-08-20 09:55 11092者概念: Hashtable继承自Dictionary类 ... -
Java中HashCode()理解
2011-08-20 09:42 1110先从一个java基础面试的问题开始引入吧: 问题: 两个对象值 ... -
java继承复习
2011-07-24 14:30 867package com.edison; public ... -
Java多态机制中的绑定规则
2011-07-23 10:25 1533package com.example; publi ... -
java接口进一步理解(二)
2011-07-23 09:54 1116抽象类与接口比较: 1.抽象类与接口都位于继承树的上层 相 ... -
java接口进一步理解(一)
2011-07-23 09:47 1294今天来整理篇关于java接口知识的文章: 首先我们知道 ... -
SimpleDateFormat的常用方法
2011-07-22 10:17 1122/** parse()可以 把String型的字符串转换成 ... -
线程和Runnable接口的理解
2011-06-21 11:59 1195通过卖票来进行解释: 1.ThreadTicket.java: ... -
数组相同元素清理(HashSet)
2011-06-10 13:05 1345import java.util.Arrays; impor ...
相关推荐
在现代科技领域,单片机(又称微控制器)被广泛应用于各种自动化控制系统中。在电池管理系统中,单片机扮演着至关重要的角色,尤其在电池温度监测...对于硬件开发人员而言,本篇文献提供了一个详细的硬件实现参考方案。
文章还提到了几个重要的参考文献,如GB/T5009.48-2003《蒸馏酒及配制酒卫生标准的分析方法》和王德才等人的《气相色谱法在医学检验中的应用》,这些参考文献为气相色谱法的应用提供了标准化指导和技术支持。...
- 参考文献和专业指导:文章可能参考了相关文献和技术资料,为读者提供了进一步学习的资源。 【详细说明】 PIC16F873微处理器是一款高性能、低功耗的微控制器,特别适合于电池供电的便携式设备。它的核心是14位RISC...
同时,文章提到了“文献标识码”和DOI,表明该研究遵循了严谨的科研流程,具有较高的学术价值。对于口腔医学专业人士来说,这些发现提供了实际的临床指导,有助于优化半导体激光美白技术的应用。
例如,中图分类号、文献标识码和文章编号有助于将文献准确地归类和索引,方便后续的引用和研究。 9. 基金项目: 文档中提到了国家“863”计划以及自由空间激光通信系统APT分系统的资助项目,表明本研究可能得到了...
文章强调,尽管这两类网络在硬件上是独立的,但由于业务联系,它们之间还是需要进行部分通信。 针对自动化码头的主要网络分类,文章提出了按照网络位置和网络管控进行的分类方法。从网络位置来看,码头现场包括水平...
文献标识码“A”代表文章属于理论与应用研究类文献;中图分类号“TM32”指这篇文章属于电力电子技术领域。 11. 作者信息与资金支持: 文章作者包括李辉、龙海洋、白鹏飞、郑媚媚,他们来自重庆大学输配电装备及...
对于技术开发人员来说,参考文献中的算法和模型构建经验,能够指导他们在新的项目中作出更加合理的决策。 总之,基于数据挖掘技术的红酒评分预测模型是利用现代信息技术手段,对红酒行业数据进行深入分析的产物。该...
文章从自适应均衡器的基本功能入手,讲解了通信系统中自适应均衡器的重要性,并阐述了基于现场可编程门阵列(FPGA)的自适应均衡器设计原理,特别是在提出符号最小均方(LMS)算法后,如何减少硬件资源消耗的过程。...
文章通过试验数据和参考文献,提出了一些降低光纤传输损耗的方式,比如通过优化波导结构、降低弯曲损耗和提高光纤玻璃化温度等方法。 为了验证光纤通信技术在采摘机器人图像检测中的应用效果,文章进行了一系列的...
7. 参考文献和专业指导:文章还提供了相关领域的文献标识码、文章编号等信息,这为有兴趣深入研究的企业和个人提供了进一步的专业资料和指导。 整体而言,本文为烟草企业提供了基于网络流向的网络安全策略研究的...
高斯白噪声是一种具有平坦功率谱的随机信号,其特点是在任何频率上具有相同的平均功率。在电力系统中,这种噪声可能导致系统的非线性行为,甚至引发混沌振荡。混沌振荡是指系统状态在没有明显规律的情况下剧烈变化,...
在当前科技条件下,尽管具体腐蚀数据可测量,即具有“白”特征,但影响材料腐蚀的因素复杂多样,涉及材料内部结构、组分以及使用环境等外部因素,难以准确测定,这些因素具有“灰”特征,导致无法建立精确的腐蚀过程...
而文献标识码“TN79A”和中图分类号则为后续的研究者提供了一个分类检索的途径,帮助他们快速定位到相关领域的研究文献。 本文的设计方案,不仅优化了MAXQ系列单片机的开发调试流程,而且为降低成本、提高软件移植...
文章作者刘艳萍来自广东工贸职业技术学院电气自动化系,其研究方向为数字图像处理算法,该研究也为该领域提供了一种新的处理方法,具有一定的参考价值。 综上所述,该研究的核心知识点包括: 1. X光机用于PCB图像...
【氧化锌晶须与硅酸盐水泥复合材料的电磁波透射特性研究】 本文主要探讨了氧化锌晶须(ZnO_w)与硅酸盐水泥复合材料...同时,这项工作也强调了参考文献和专业指导在科学研究中的必要性,以确保研究的准确性和有效性。
文章引用了相关参考文献,强调了在导弹等军事装备中,半导体器件的存储环境建设和可靠性设计的重要性。 试验选取了一批1984年生产的国产高频小功率晶体管,经过25年的存储后进行了详尽的检测。测试内容包括电参数、...
为了验证基于混合同余法生成高斯白噪声的设计,文章使用了MATLAB和Quartus II软件进行仿真验证,并用Verilog HDL语言实现模块的功能性。实验采用的是Ahera公司的Stratix IV芯片EP4SGX230KF40C4ES。通过实验结果表明...
传统观点认为,深度学习模型能够很好地泛化到未见过的数据上,但对抗样本的出现表明模型对输入的微小扰动异常敏感。这种攻击方式可以分为几种不同类型,包括白盒攻击(white-box attack)、黑盒攻击(black-box ...