您现在的位置: 365建站网 > 365学习 > java中类public class和class声明区别

java中类public class和class声明区别

文章来源:365jz.com     点击数:225    更新时间:2018-07-30 09:10   参与评论

在java中声明一个类的方式有两种 即:public class 类名称 和 class 类名称。

(1)使用public class 声明一个类时,类名称必须和文件名一致,否则程序将无法编译。

(2)使用class声明一个类时,类名称可以和文件名不一致,但是在执行时一定要执行生成后的*。class文件。

(3)在一个java文件中可以有多个class类的定义,但是只能有一个public class定义。

(4)在定义类名称时,类的名称首字母必须要大写。这是命名规则。

java中的关键字:

(1)虽然goto、const在java中并没有任何意义,却也是保留字,他们与其他的关键字一样,在程序中不能用来作为自定义的标识符。

(2)true、false、null虽然也不是关键字,但是却作为一个标识类型,也不能直接使用。

(3)assert、enum关键字是java新增加的,assert是jdk1.4增加的,enum是jdk1.5后增加的


我们在编写类的时候可以使用两种方式定义类:

public class定义类:
class定义类:

如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名称完全一致。
定义一个类(文件名称为:HelloWorld.java)
public class HelloWorld{ //声明一个类,类名称的命名规范:所有单词的首字母大写
public static void main(String args[]){ //主方法
System.out.println("Hello World!!!"); //系统输出,在屏幕上打印
}
};
public class HelloWorld { //声明一个类,类名称的命名规范:所有单词首字母大写

如果类的声明使用了class的话,则类名称可以与文件名称不一致,但是执行的时候,执行的是生成后的名称【HelloJava

定义一个类(文件名称为:Hello.java) 
class HelloJava{
public static void main(String args[]){
System.out.println("Hello Java!!!");
}
};
文件名称为Hello.java,文件名称与类名称不一致,但是因为使用了class声明所以,此时编译不会产生任何错误,但是生成之后的*.class文件的名称是和class声明的类名称完全一致的:HelloJava.class
执行的时候不能再执行java Hello ,而是应该执行java HelloJava 

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

小结:public class是公共类的意思,public 是访问修饰符.java规定,一个类文件,public 修类的class只有一个,并且类名必须和你新建的这个类文件名一样,所以一个类文件中可以有多个类,但由public修饰的类只能有一个.


//File name: HelloDemo.java
package com.package1;
 
public class Hello {
}
 
public class A{};
private class B{};   // protected class B{};

 

 
编译出错:


Error:(4, 8) java: class Hello is public, should be declared in a file named Hello.java

Error:(7, 8) java: class A is public, should be declared in a file named A.java

Error:(8, 9) java: modifier private not allowed here    //Error:(8, 11) java: modifier protected not allowed here

编译OK后,将生成三个class文件:A.class B.class  HelloDemo.class

与C++的区别:

C++中public关键字不能修饰类,只能修饰成员变量,成员方法。

C++没有包的概念,与之类似的是C++名字空间(比如:using namespace std)

包中,只有public修饰的类,才能在包外部包可见,否则只是包内私有的类。


//File name: HelloDemo.java
package com.package1;
 
public class HelloDemo {
    public static void main_test(String[] args) {
        System.out.println("Enter ...");
    }
}
 
class A{}
class B{}


//File name: Main.java
package com.company;
 
public class Main {
    public static void main(String[] args) {
        System.out.println("Enter main ...");
        com.package1.HelloDemo demo = new com.package1.HelloDemo();  
        com.package1.A a;    //没有import,也可通过全路径访问HelloDemo, java中的import与C++中的include就不是相似的东东。


Main.java编译出错:


Error:(8, 21) java: com.package1.A is not public in com.package1; cannot be accessed from outside package


如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (225人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------