- 浏览: 443287 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
尼古拉斯.fwp:
...
HttpClient模拟表单multipart/form-data方式上传文件和参数 -
绿茵好莱坞:
好文,非常不错
HttpClient模拟表单multipart/form-data方式上传文件和参数 -
dotku:
运行 mvn clean install 出现报错信息> ...
可运行war包,命令行启动war包 -
woxiangbo:
多行合并成1行,可用 GROUP_CONCAT 函数
sql 查询结果格式化 -
woxiangbo:
iframe获取父框架的 某个元素的值,直接在iframe的j ...
js 跨 frame操作对象
一、 定义
放在一个类的内部的类我们就叫内部类。
二、 作用
1.内部
类可以很好的实现隐藏
一般的非内部类,是不允许有 private 与protected权限的,但内部类可以
2.内部类拥有外围类
的所有元素的访问权限
3.可是实现多重继承
4.可以避免修改接口而实现同一个类中两种同名方法的调用。
三、 例子
1.
实现隐藏
平时我们对类的访问权限,都是通过类前面的访问修饰符来限制的,一般的非内部类,是不允许有 private
与protected权限的,但内部类可以,所以我们能通过内部类来隐藏我们的信息。可以看下面的例子
接口
package insidecategory; public interface Incrementable { void increment(); }
具体
类
package insidecategory; public class Example { private class InsideClass implements InterfaceTest { public void test() { System.out.println("这是一个测试"); } } public InterfaceTest getIn() { return new InsideClass(); } }
上面加粗的部分是内部类,访问修饰符是private
客
户端程序
package insidecategory; 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 insidecategory; public class TagBean { private String name="liutao"; 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 insidecategory; public class Example1 { public String name() { return "liutao"; } }
类
二
package insidecategory; public class Example2 { public int age() { return 25; } }
类三
package insidecategory; 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 insidecategory; public interface Incrementable { void increment(); }
类 MyIncrement
package insidecategory; public class MyIncrement { public void increment() { System.out.println("Other increment()"); } static void f(MyIncrement f) { f.increment(); } }
大家看上面加黑的部分,两个方法都是一样的。在看下面这个类要继承这两个类
如果不用内部类
package insidecategory; public class Callee2 extends MyIncrement implements Incrementable { public void increment() { //代码 } }
想问一下大家
increment()这个方法是属于覆盖MyIncrement这里的方法呢?还是Incrementable这里的方法。我怎么能调到
MyIncrement这里的方法?显然这是不好区分的。而我们如果用内部类就很好解决这一问题了。看下面代码
package insidecategory; 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(); } }
我们可以用内部类来实现接口,这样就不会与外围类
的方法冲突了。
发表评论
-
table_space
2017-04-13 16:56 0SELECT TABLESPACE, MEG ... -
Asset Holdings And Valuation Report 43_example_sql.sql
2016-12-14 15:59 0SELECT securityParAmount.*, ... -
Java垃圾回收机制
2016-01-07 13:37 836Java垃圾回收机制 ... -
swfuplaod 结合common-fileupload servlet 上传文件
2013-08-20 13:35 1151其实 swfupload 就是一个前端上传控件,和后端没什 ... -
java写文件的时候内存溢出
2013-07-24 10:30 7919解决步骤: 1、设置tomcat的jvm参数: 在tom ... -
生成指定位数的随机字符串和数字
2013-01-07 14:37 1484import java.util.Random; ... -
CountDownLatch
2012-12-29 13:22 860有时候会碰到这样一种场景,线程A(主线程)需要等待另外一个线程 ... -
通过Httpclient上传文件
2012-12-26 10:07 1667import java.io.File; import ... -
HttpClient模拟表单multipart/form-data方式上传文件和参数
2012-12-21 15:06 100079主要有三个类,亲试成功: HttpPostEmulator: ... -
eclipse老版本下载
2011-04-07 20:12 1351http://archive.eclipse.org/ecli ... -
JSP读取文件
2010-12-21 21:27 1817想在Jsp中读取一个文本文件非常简单,请看下面的例子: St ... -
JAVA拷贝文件
2010-12-18 18:46 1386public static void CreateDBFil ... -
SQL执行顺序
2010-12-06 09:44 13791、from子句组装来自不同数据源的数据; 2、where子句 ... -
去除List列表中重复值(3种解决方法)
2010-12-03 11:35 2243public static void main(String[ ... -
ubuntu 10.0.4 安装 JDK
2010-10-15 15:48 1606在网上搜的一些信息,安装JDK的方法都过时了 从官网下的JDK ... -
FileInputStream的路径问题
2010-09-21 10:19 3844FileInputstream 要想在JAVA里不写死路径,有 ... -
利用commons-fileupload上传文件
2010-08-09 17:25 1457前端JSp页面: <%@ page language= ... -
JSTL循环
2010-08-06 14:58 1148<c:forEach items="${Roi ... -
MyEclipse8.x无法安装FB4插件的朋友请进
2010-07-14 11:34 2714MyEclipse8.x无法安装FB插件的朋友请进 由于MyE ... -
oracle 存储精确时间 年月日 时分秒的一点个人心得
2010-07-02 16:09 8596我用的是ibatis框架 为了做一个聊天功能,发现不能显示最 ...
相关推荐
扩大内部类作用域的2种方法、内部类获取外部类引用扩大内部类作用域的2种方法内部类的作用域:外部类对象val students = new ArrayBuffer
Java内部类的作用
本篇文章介绍了,基于java内部类作用的深入分析。需要的朋友参考下
内部类的作用域仅限于其外部类,可以访问外部类的成员,同时又能保护类的封装性。 目标: 通过这个源码资源,你将学会以下内容: - 内部类的定义和语法 - 如何在外部类中访问和操作内部类 - 不同类型的内部类(静态...
1.接口-简介 2.接口-作用 3.接口-定义方式 4....内部类-作用 9.内部类-特殊语法规则 10.内部类-安全性 11.内部类-局部内部类 12.内部类-匿名内部类 13.内部类-静态内部类 14.综述
Java内部类是Java言语的一个很...但是幕后英雄也有用武之地,在很多时候,恰当的使用Java内部类能起到让人拍案叫绝的作用。本文试图谈一谈让这个幕后英雄也有用武之地的四个场景,希望引起大家对使用Java内部类的兴趣。
介绍一些内部类的使用方法,方便大家查阅。通时还有一些入门的stream操作。摘要必须大于50个字节!
Java语言中的内部类根据...局部内部类是定义在方法或作用域内的类;匿名内部类是没有命名的内部类,通常用于实现接口或继承父类;静态内部类是定义在类的内部且与类的实例无关的类。以上是对内部类的简要分类和认识。
3、局部内部类:定义在方法中的类,作用范围只在当前方法中。 4、匿名内部类:特殊的局部内部类,没有类名,只能作为子类出现且只能创建一个对象。 Object类 Object类有什么特点? Object类是所有类的父类(超类,...
java内部类的作用[归类].pdf
java内部类的作用[文].pdf
15.4.4 匿名内部类作用的体现 337 15.5 理解内部类 339 15.6 内部接口 340 15.6.1 定义在类中的内部接口 340 15.6.2 定义在接口中的内部接口 341 15.7 小结 342 第16章 多线程——Java中的并发协作 ...
文章目录简介内部类静态内部类非静态内部类静态方法内部类非静态方法的内部类匿名类内部接口总结 简介 一般来说,我们创建类和接口的时候都是一个类一个文件,一个接口一个文件,但有时候为了方便或者某些特殊的原因...
主要介绍了Java中的静态内部类详解及代码示例,具有一定参考价值,需要的朋友可以了解下。
摘要:“内部人控制”并非“内部人...过“内部人”而起作用,依靠合理、有能力的内部人予以有效地控制是当前中国公司治理的现实选择。 虽然该观点与主流观点相左,但它将使人们以一种全新的思路来理解公司治理的深层含义。
第 3 章 接口与内部类接口是什么?接口有什么作用?如何使用接口?这些都是本章需要解决的问题。本章将详细地讲述接口的概念,并以实战结合的方式,学习这些抽象概念。
【地理】2011年高考试题分类汇编专题4_地质作用与地表形态大智学校内部资料.pdf
主要给大家介绍了关于Java匿名内部类的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
在强相互作用研究中,最困难的问题是解决强核力的机械表达,从而无法全面描述强子内部和强子之间的状态。 通过分析,提出了合理的强力势假说,根据不同的应力粒子将强相互作用分为五种类型。 然后,分别得到不同的...
java基础知识 1、作用域public,private,protected,以及不写时的...注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象