管理类文件

        在类中还可以再定义类,称之为内嵌类或嵌套类。非静态的内嵌类可以分为三种:成员内嵌类、区域内嵌类和匿名内嵌类。内嵌类的主要目的,就是对外部隐藏类的存在性。

使用内嵌类的好处: 

        1. 内嵌类可以直接存取其所在类中的私用成员。

        2. 当某个Slave类完全只服务于一个Master类时,可以将之设置为内嵌类,这样使用Master类的人就不用知道Slave的存在。

        3. 对调用静态方法的对象隐藏返回对象的实现细节或产生方式。

 

    在文件管理方面,成员内嵌类在编译完成之后,所产生的文件名称为“外部类名 称$内嵌类名称.class”。

    内部类还可以被声明为static,不过由于是static,它不能存取外部类的方法,而必须通过外部类所生成的对象来进行调用。被声明为static的内部类,事实上也可以看做是另一种名称控件的管理方式。

       public  class  Outer

        {

            public static class inner

            {

                ...

            }

            ...

        }    

        可以使用以下方式来使用Inner类:

                Outer.Inner   inner = new Outer.Inner();

 

匿名内嵌类: 

        内嵌匿名类可以不声明类的名称,而使用new直接产生以一个对象,它可以使继承某个类或是实现某个接口。其声明方式如下:

            new  [类或接口()]

            {

                //实现

            }

 

        例如:

            public  class  AnonumousClassdemo

            {

                public static void main(String[] args)

                {

                    Object obj = new Object()

                    {

                        public String toString()

                        {

                            ...        //重新定义toString()

                        }

                    }

                }

            }

 

    如果要在内嵌匿名类中使用外部的区域变量,变量在声明时必须为final。

    在文件管理方面,内嵌匿名类在编译完成之后会产生“外部类名称$编号.class”。

 

package:

        为了能建立与包相对应的文件系统结构,在编译时可以加入-d参数,并指定产生的类文件存储在哪一个目录之下。

        package的设置会成为类的一部分名称。

 

import:

        使用import关键字,告知编译器所要使用的类是位于哪一个包。

            import  目录.目录.类名

            import  目录.目录.*

 

        将源文件与编译完成的类文件放在一起容易发生问题,可以建立一个专门放源文件代码.java文件的目录,并建立一个专门放.class文件的目录:

                javac -d  ./classes  ./src/*.java

        这样,可以直接到classes目录中执行  java  类名

        或:

                java  -cp  ./classes 类名

 

public 与包:

        一个类在定义时可以使用public加以修饰,一个.java文件中可以定义数个类,但只能有一个被声明为public,没有被声明为public的类只能被同一个包中的类的实例调用。

        类成员也可以声明为public,声明为public的类成员可以被其他对象调用,如果声明类时不适用public、protected或private设置权限,则预设为包存取范围,只有同一个包中的类可以调用这些类成员。

        类的权限设置会约束类成员上的权限设置,所以如果类上不声明public,而类成员上设置了public,则类成员同样地也只能被同一个包的类存取。

        当在Java中定义一个类,但没有定义构造函数时,编译器会自动产生一个默认构造函数。

        如果自行定义构造函数,编译器就不会加上默认的构造函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值