java 内部类的作用

来源:互联网 发布:手机音量调节软件 编辑:程序博客网 时间:2024/06/13 03:48
一、 定义
放在一个类的内部的类我们就叫内部类。

二、 作用
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