当前位置:编程学习 > JAVA >>

Thinking in Java之内部类

        前言

          学习Java已经有一段日子了,最近的日子笔者在重新对java进行再学习。不过这个阶段的学习

    笔者不会再着眼于具体的语法哪些细枝末节的东西了,这个阶段的学习中笔者将会对以前学习的

    模糊的,遗漏的知识概念做一些相关性的总结。今天,恰好看到内部类这块了,记得以前对内部类

    的使用就有一些模糊,因此专门就内部类做一些总结。

      内部类概念
               所谓内部类就是指在一个外部类中再定义一个类(内部类),这样内部类就作为一个成员依附于

          外部类而存在。不过在使用内部类的时候需要注意的是内部类可以static,protect,private,但是

          外部类只能使用public和缺省的包访问权限.

            若非这两种编译出错:

            Illegal modifier for the class Outer; only public, abstract & final are permitted 

[java]
package com.kiritor; 
public class Outer { 
    private String type; 
 
    public String getType() { 
        return type; 
    } 
 
    public void setType(String type) { 
        this.type = type; 
    } 
 
    class Inner { 
        private String type; 
 
        public String getType() { 
            return type; 
        } 
 
        public void setType(String type) { 
            this.type = type; 
        } 
 
    } 

package com.kiritor;
public class Outer {
 private String type;

 public String getType() {
  return type;
 }

 public void setType(String type) {
  this.type = type;
 }

 class Inner {
  private String type;

  public String getType() {
   return type;
  }

  public void setType(String type) {
   this.type = type;
  }

 }
}

      内部类的意义
                 简单看来内部类好像就是一种代码隐藏机制:将类至于其他类的内部.不过内部类远不止这样

          它了解外部类,能够和外部类进行必要的通信。

                  1、封装一些别人不想知道的操作.

                  2、内部类可以访问创建它的外部类对象的内容,甚至包括了private的变量.

            内部类同样可以实现接口,继承基类,这使得java中的多继承变得完整.。我们可以使用内部类

            的方式模拟出多继承的效果。

                 通过内部类继承基类,外部类创建内部类对象,并使用内部类提供的方法,这样就变相的实现了

           多继承的效果.


[java]
public class Graduate{   
    
    private Graduate_stu  gaduate_stu= new Graduate_stu();   
    
    private Graduate_emp  graduate_emp = new Graduate_emp();   
    
    private class Graduate_stu  extends Student{   
    
         public void getName() {   
            ....  
        }   
    }   
    
    private class Graduate_emp extends Employee{   
    
         public double getMoney() 
            { 
                return 0.0; 
             } 
    }   
    
    public void getName() {   
        gaduate_stu.getName();   
    }   
    
    public double getMoney() {   
        graduate_emp .getMoney();   
    }   
}   

public class Graduate{ 
  
    private Graduate_stu  gaduate_stu= new Graduate_stu(); 
  
    private Graduate_emp  graduate_emp = new Graduate_emp(); 
  
    private class Graduate_stu  extends Student{ 
  
         public void getName() { 
            ....
        } 
    } 
  
    private class Graduate_emp extends Employee{ 
  
         public double getMoney()
            {
                return 0.0;
             }
    } 
  
    public void getName() { 
        gaduate_stu.getName(); 
    } 
  
    public double getMoney() { 
        graduate_emp .getMoney(); 
    } 
}              只是用代码简单的模拟了一下!
                 内部类还有一个颇具吸引力的特点,那就是内部类和外部类对于接口的继承是"分离"的

            相互不存在影响的,基于现实的情况,有时候我们实现一个接口,但是接口的方法在此类

 

补充:移动开发 , IOS ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,