• java基础学习,一些零散的笔记之内部类


          内部类有着这么一句话,“接口只是解决了部分问题,而内部类使得多重继承的解决方案变得更加完整”。

    依我的理解,一个类只能继承一个类,内部类也不另外,但为什么说内部类是的Java能解决多重继承

    的问题呢。重点就在于一个类的每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否

    已经继承了某个(接口的)实现,对于内部类都没有影响。所以,如果我们想一个类(在这里称之为外部类

    能解决多重继承的问题,我们可以在其内部创建多个内部类,让这些内部类各自来继承一个类,这样,外部就

    具有解决多重继承问题的能力了。

    • 内部类的一些特性:

          1、内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立。

          2、在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。

          3、创建内部类对象的时刻并不依赖于外围类对象的创建。

          4、内部类并没有令人迷惑的“is-a”关系,他就是一个独立的实体。

          5、内部类提供了更好的封装,除了该外围类,其他类都不能访问。

    • 内部内对象的创建

        内部类对象的创建,分为两种情况:静态内部类和非静态内部类

         1.非静态内部类

             非静态内部类的对象的创建,必须先创建外部类的对象outerInstance,再用outerInstance.new

    一个内部类的对象,语法如下:

    1.        OuterClass outerClass = new OuterClass();
    2.        OuterClass.InnerClass innerClass = outerClass.new InnerClass();

        2.静态内部类

           静态内部类由于是静态的,在外部类初始化时就被加载了,所以不用拿到外部类的对象就能直接new了,

    语法如下:

                     OuterClass.InnerClass2  c1 =  new InnerClass2();

           关于静态内部类的详细学习内容,可通过以下网站进行学习: http://www.imooc.com/code/2095

    以下为类定义的代码:

    public class OuterClass {
       public OuterClass(){
    	   System.out.println("创建外部类对象");
       }
       
       
       class InnerClass{
    	   public InnerClass(){
    		   System.out.println("创建内部类InnerClass1的对象,它是非静态的");
    	   }
    	   
       }
       
       static class InnerClass2{
    	   public InnerClass2(){
    		   System.out.println("创建内部类InnerClass2的对象,它是静态的");
    	   }
       }
       
    
    }
    
    •   内部类的分类

               1.成员内部类

           Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,Inner 类可以使用任意访问控制符,

    如 public 、 protected 、 private 等。详细的内容可进入慕课网学习,网址:

    http://www.imooc.com/code/2092

               2.方法中的内部类

           方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。

    一定要注意哦:由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。

  • 相关阅读:
    【Android】3.13 路径规划功能
    【Android】3.12 兴趣点( POI)搜索功能
    【Android】3.11 地理编码功能
    【Android】3.10 热力图功能
    【Android】3.9 覆盖物功能
    Java并发工具类之CountDownLatch
    GitHub项目加入Travis-CI的自动集成
    一种基于zookeeper的分布式队列的设计与实现
    常用的限流算法
    zookeeper客户端命令详解
  • 原文地址:https://www.cnblogs.com/benpaodexiaojue/p/7016061.html
Copyright © 2020-2023  润新知