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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯亚磊 初级黑马   /  2012-6-26 03:37  /  2300 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于使用public class和class声明类的区别?
刚学,这点很迷惑~~

5 个回复

倒序浏览
在java中声明一个类有两种方式,即public class 类名称和class 类名称。
1,使用"public class 类名称"声明一个类时,类名称必须与文件名称一致,否则程序将无法编译。
2,使用"class 类名称"声明一个类时,类名称可以与文件名称不一致,但是在执行时一定要执行生成后的*.class.
3,在一个java文件中可以有多个class类的定义,但是只能有一个public class定义。
回复 使用道具 举报
在定义类是public class定义的类权限是公共的,所以要使它定义的类名和java文件名一致,例如
public class NameDemo                                       //用public class声明一个类
{
       public static void main(String [] args)                     //主函数
       {
       System.out.println("HelloWord");
       }
}
如果你保存的时候保存的*.java文件是Demo.java与public class所声明的类的类名不一致,那么在编译时会出现错误提示:Demo.java:1  类NameDemo是公共的应在名为NameDemo.java的文件中声明
如果类的声明使用的的class的话,则类名称可以与文件名称不一致,但执行是执行生成后的class文件,还如上例:
class NameDemo                                       //用public class声明一个类
{
       public static void main(String [] args)                     //主函数
       {
       System.out.println("HelloWord");
       }
}
同样保存成Demo.java文件,和类名不一致,因为使用了class声明,所以编译时不会出错,但编译后生成的class文件却是和类名相同:NameDemo.class文件,执行的也是生成后的名称。在一个java文件中只能有一个public class声明的类,但可以有多个class声明的类

回复 使用道具 举报
在编写类的时候可以使用两种方式定义类:
    public class定义类:
    class定义类:
    如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名称完全一致。
范例:定义一个类(文件名称为:Hello.java)
public class HelloDemo{    //声明一个类,类名称的命名规范:所有单词的首字母大写
    public static void main(String args[]){    //主方法
        System.out.println("Hello World!!!");    //系统输出,在屏幕上打印
    }
};
此类使用public class声明,类名称是Hello Demo,但是文件名称Hello.java,所以,此时编译时会出现如下问题:

Hello.java:1 类 HelloDemo 是公共的,应在名为HelloDemo.java文件中声明
public class HelloDemo{ //声明一个类,类名称的命名规范:所有单词首字母大写

1、错误
以上的错误提示表示:因为使用的是public class声明,所以类名称应该与文件名称完全一致,即应该使用"HelloDemo.java"表示类的名称。
如果类的声明使用了class的话,则类名称可以与文件名称不一致,但是执行的时候肯定执行的是生成后的名称。
范例:有如下代码(文件名称为:Hello.java)
class HelloDemo{
    public static void main(String args[]){
        System.out.println("Hello World!!!");
    }
};
文件名称为Hello.java,文件名称与类名称不一致,但是因为使用了class声明所以,此时编译不会产生任何错误,但是生成之后的*.class文件的名称是和class声明的类名称完全一致的:HelloDemo.class
执行的时候不能再执行java Hello,而是应该执行java HelloDemo

在一个*.java的文件中,只能有一个public class的声明,但是允许有多个class的声明
public class Hello{
    public static void main(String args[]){
        System.out.println("Hello World!!!");
    }
};
class A{};
class B{};

在以上的文件中,定义了三个类,那么此时程序编译之后会形成三个*.class文件。
回复 使用道具 举报
上面几个说了public和.class文件的关系,还有一方面就是public这个权限修饰符对这个类的作用。
public修饰的类可以是权限最大 的,可以被任何包下的类,其他项目的类使用。
回复 使用道具 举报
在编写类的时候可以使用两种方式定义类:
    public class定义类:
    class定义类:
    如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名称完全一致。
范例:定义一个类(文件名称为:Hello.java)
public class HelloDemo{    //声明一个类,类名称的命名规范:所有单词的首字母大写
    public static void main(String args[]){    //主方法
        System.out.println("Hello World!!!");    //系统输出,在屏幕上打印
    }
};
在一个*.java的文件中,只能有一个public class的声明,但是允许有多个class的声明
public class Hello{
    public static void main(String args[]){
        System.out.println("Hello World!!!");
    }
};
class A{};
class B{};

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马