java 内部类的作用
来源:互联网 发布:手机音量调节软件 编辑:程序博客网 时间:2024/06/13 03:48
一、 定义
放在一个类的内部的类我们就叫内部类。
二、 作用
1.内部类可以很好的实现隐藏
一般的非内部类,是不允许有 private 与protected权限的,但内部类可以
2.内部类拥有外围类的所有元素的访问权限
3.可是实现多重继承
4.可以避免修改接口而实现同一个类中两种同名方法的调用。
三、例子
1.实现隐藏
平时我们对类的访问权限,都是通过类前面的访问修饰符来限制的,一般的非内部类,是不允许有 private 与protected权限的,但内部类可以,所以我们能通过内部类来隐藏我们的信息。可以看下面的例子接口
具体类
上面加粗的部分是内部类,访问修饰符是private
客户端程序
3.可以实现多重继承
这个特点非常重要,个人认为它是内部类存在的最大理由之一。正是由于他的存在使得Java的继承机制更加完善。大家都知道Java只能继承一个类,它的多重继承在我们没有学习内部类之前是用接口来实现的。但使用接口有时候有很多不方便的地方。比如我们实现一个接口就必须实现它里面的所有方法。而有了内部类就不一样了。它可以使我们的类继承多个具体类或抽象类。大家看下面的例子。
类一
类二
类三
转自:http://andy136566.iteye.com/blog/1061951/
放在一个类的内部的类我们就叫内部类。
二、 作用
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 getInterface() { 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(); }}
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()); }}
转自:http://andy136566.iteye.com/blog/1061951/
0 0
- Java内部类的作用
- java内部类的作用
- JAVA内部类的作用
- JAVA内部类的作用
- JAVA内部类的作用
- java内部类的作用
- java内部类的作用
- java内部类的作用
- java 内部类的作用
- java内部类的作用
- Java的内部类作用
- Java内部类的作用
- Java内部类的作用
- java内部类的作用
- Java内部类的作用
- Java内部类的作用
- java内部类的作用
- Java内部类的作用
- effective c++ 条款7,8(为多态基类声明virtual析构函数,别让异常逃离析构函数)
- Swift开发:通过storyboard创建控制器
- 关于deepin外放有声音,耳机没有声音的奇葩解决方案
- hibernate 一级缓存和二级缓存区别总结
- js easyui tree判断是否父节点
- java 内部类的作用
- 横屏时,电池状态栏没有了
- java NIO与IO的区别
- 347. Top K Frequent Elements
- CSS 块对象(独占一行)和内联对象
- 上传和发布AppStore会碰到:Failed to locate or generate matching signing assets
- SSM(Spring mvc+Spring+Mybatis)框架整合
- Activiti 学习总结内容
- 动画之补间动画详细总结(三)代码生成