A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陆华山 黑马帝   /  2011-10-15 20:36  /  2949 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陆华山 于 2011-10-15 20:39 编辑

import java.io.*;


class File
{
        public static void main(String[] args) throws IOException
        {
            method();

        }
       
      public static void method()throws IOException
                {
        
                        File a = new File("aaaab.txt");
                }
}

评分

参与人数 1技术分 +1 收起 理由
admin + 1 注意命名!

查看全部评分

8 个回复

倒序浏览
sunyu 黑马帝 2011-10-16 10:54:36
沙发
本帖最后由 陆华山 于 2011-10-15 20:39 编辑


import java.io.*;


class File
{
        public static void main(String[] args) throws IOException
        {
            File.method();

        }
        
      public static void method()throws IOException
                {
        
                        File a = new File("aaaab.txt");
                }
}

试下,

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
本帖最后由 赵江锋 于 2011-10-16 12:08 编辑

没错啊  可以通过编译
2、静态方法
 静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为实例成员与特定的对象关联!因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
你使用的类的名字有问题的,不用使用File类作为你自定义的类名,你可以改为class FileTest{},这样你再试一试。

评分

参与人数 1技术分 +2 黑马币 +3 收起 理由
admin + 2 + 3

查看全部评分

回复 使用道具 举报
你的自定义类名称和JAVA内置的系统类名称重复了。
回复 使用道具 举报
朱华 黑马帝 2011-10-17 13:49:57
地板
本帖最后由 朱华 于 2011-10-17 13:50 编辑

纯手打,请区分。
嗯,很容易范的一个错误,特别是当你调用第三方库的时候,你自己创建了一个类,把名字命名成了你本来想调用的那个类的名字,效果就如同覆盖,除非你写全包名,否则它只会NEW一个你自己刚刚定义的那个类,而不会调用你想去调用的那个类。
回复 使用道具 举报
fso918 黑马帝 2011-10-17 18:01:02
7#
你的类名取得不对。
你的类名和java.io包里的File类同名,当你的程序中也用到File类时,BootStrap类加载器会加载java.io包里的File类,而不是AppClassLoader加载你自己写的File类,
而java.io包中的File类没有你调用的那个静态方法。
回复 使用道具 举报
兰海忠 黑马帝 2011-10-17 18:41:07
8#
本帖最后由 兰海忠 于 2011-10-17 18:42 编辑

首先楼主反了命名方面的错误,因为IO包里面已经有了名为File包的类;楼主又定义了File类,这是系统认为new的对象是自己定义的类了。而自己定义的类是调用默认构造函数的。没有参数。new了一个带参数的构造函数肯定是错的了。
其次像这种 有main函数所在的类在本类的其他方法最好不要在new一个自己的对象,如
class MFile
{
         public static void main(String[] args) throws IOException
         {
             MFile.method();

        }
       public static void method()throws IOException
                 {
         
                        MFile a = new MFile();
                         a.main(args)
                         System.out.println("ddfsf");
                }
}
     因为这的话这个对象也可以有main()方法容易引错误。当然是什么错误我也不知道。因为我没有试过。 所以楼主把自己的类名改一下 在 method方法中   File a = new File("aaaab.txt");  不变就可以创建一个File对象了。但这是系统之创建了一个虚拟的File文件即该file文件还没在硬盘中新建aaaab.txt文件。通过a.createNewFile();方法可实现在硬盘中新建aaaab.txt文件。
回复 使用道具 举报
张奇云 黑马帝 2011-10-17 19:13:03
9#
这是你自己定义的File类,所以你要自己要提供这个类的构造方法。但是看你的代码是想用java.io包里的File类的构造方法,要么你换个类名。或者把 File a = new File("aaaab.txt"); 改成java.io.File a = new java.io.File("aaaab.txt");
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马