java内部类 和外嵌类

来源:互联网 发布:淘宝店铺活动策划 编辑:程序博客网 时间:2024/05/21 03:17
/*    day in 2015 10 08    night     @damon    关于内部类的理解    :java 中支持在一个类中定义内部类,而类本身称为外嵌类    内部类的外嵌类的变量在内部类仍然有效,内部类的类中的方法    也可以调用外部类中的方法。    内部类中不能傻声明类变量和类方法,外嵌类中可以用内部类声明对象    作为外嵌类的成员    内部类仅仅作为外嵌类使用,其他的类不能用某个类来声明对象*///下面将做一个书上的例子做为理解//class RedCowclass RedCowOut//外嵌类{    static String formName;//static 静态变量    RedCow cow;//内部类声明对象    RedCowOut()//构造函数的声明    {        //无内容    }    RedCowOut(String s)//带参数的构造函数,进行初始化    {        cow = new RedCow(150,122,5000);//初始化体长和价格        formName = s;//向构造函数传入初始化用的类属性    }    void showCow()//声明一个显示信息的函数 用来将信息输出    {           //外嵌类可以 用内部类声明对象,然后用对象 调用 内部类中的方法        cow.speack();//直接调用内部类中的输出信息的方法    }    class RedCow//声明外类    {        //定义属性file        String cowName = "reddada";//初始化        //声明体长 价格        int height,weight,price;        RedCow(int h,int w,int p)//构造函数的声明        {            height = h;//通过构造函数传入值 进行函数的初始化            weight  = w;            price = p;        }        void speack()        {            System.out.println("name "+" "+cowName+"height"+" "+height+"weight"+weight+" address "+formName);        }    }//内部类 结束}//外部类结束public class  test1{    public static void main(String[] args)     {        RedCowOut dada = new RedCowOut("图书馆");//传入初始化用的参数        //dada.showCow();//直接调用外嵌类中的显示函数 封装调用        //另一种调用方式        dada.cow.speack();//直接调用 外嵌类中声明的内部类的对象 然后再调用 内部类的方法        System.out.println("Hello World!");    }}

值得注意的是java编译器生成内部类的字节码文件的名字和通常类的类不同,内部类对应的字节码文件格式是:“外嵌类$内部类”。
内部类可以被修饰为static内部类。

0 0
原创粉丝点击