黑马程序员技术交流社区

标题: 关于内部类基础的简介 [打印本页]

作者: 张学东    时间: 2012-10-1 14:35
标题: 关于内部类基础的简介
本帖最后由 ___冬瓜_, 于 2012-10-1 14:39 编辑

经过这几天的学习,小弟今天就来总结下,关于内部类的一些问题。以前学习java的时候没搞明白,现在终于明白了。。。。
内部类是指:定义于内部的类,内部类是一种有用的机制,他允许程序员将一些逻辑上相关的类组织在一起,并且可以控制内部类的可见性,甚至是一个方法的内部。内部类实践上使得java具备了为普通类实现多重继承的能力。
创建一个内部类其实和创建一个普通内没多大的区别,唯一不同的是内部类是定义于类的内部,放置内部类的类称为外围类。哎。。。。说多了没用 让我们直接看代码吧

package com.test.zxd;
    public class BasicInnerClass {   
/**     * @张学东     
* 内部类的基础知识介绍     
*      
*/   
       public static void main(String[] args) {     
                         Truck truck
=new Truck();      
                       Truck.Engine engine
=truck.getEngine(); // 取得内部类实例        
                        engine.burnEnery();        
                       engine.startup();   
                   }
              }
                  class Truck  {   
                        private Engine engine;         
                 
class Engine{        
                         private String horse;  //马力     
                         private String derailleur; //变身器      
                         public void burnEnery(){         
                       System.out.println(
"燃烧汽油并产生能量");        }      
                  
public void startup(){        
                                  System.out.println(
"启动");                    }        
      }   
                      public Engine getEngine(){     
                                          
if(engine ==null){      
                                                    engine
= new Engine();                    }     
                                                
return engine;    }        }
类Truck内部有一个名为Engine的内部类,Truck类内部有一个getEngine,该方法首先判断变量engine是否别初始化,如果没有被初始化就创建类Engine的实例并返回,由此可以看出创建内部类实例的方法同普通类没有什么区别。在BasicInnerClass中,首先创建了一个Truck的实例,然后通过getEngine方法创建了内部类Engine的实例并赋值给变量engine.然后通过engine调用类的Engine的方法burnEnergy和starup.
我们可以注意到在定义一个内部类的时候并没有直接使用内部类的名字。而是以Truck.Engine的方式实现的。可见内部类不能直接提供外界的调用,必须以其外部类作为前缀,其形式 如下:
外围内.内部类





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2