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 修饰符。

 

posted @ 2017-06-15 13:36  奔跑的小决  阅读(185)  评论(1编辑  收藏  举报