当前位置: 技术问答>java相关
为什么有public就编译不通过?
来源: 互联网 发布时间:2015-02-25
本文导语: 大家编译一下下面的代码,当Dog类前有public时就编译不通过,没有则通过,我对访问控制符的基本概念还是知道的,就是还不太清楚编程时该怎么使用他们。请帮我解释一下。谢谢。 class SL275 { public static void main...
大家编译一下下面的代码,当Dog类前有public时就编译不通过,没有则通过,我对访问控制符的基本概念还是知道的,就是还不太清楚编程时该怎么使用他们。请帮我解释一下。谢谢。
class SL275
{
public static void main(String[] args)
{
Dog d=new Dog();
d.setWeight(42);
}
}
public class Dog
{
private int weight;
public int getWeight()
{
return weight;
}
public void setWeight(int newWeight)
{
weight = newWeight;
}
}
class SL275
{
public static void main(String[] args)
{
Dog d=new Dog();
d.setWeight(42);
}
}
public class Dog
{
private int weight;
public int getWeight()
{
return weight;
}
public void setWeight(int newWeight)
{
weight = newWeight;
}
}
|
package就是打包的意思,package mypackage;表明,这个编译单元属于mypackage的一个库的
一部分。
其实,每个文件只能有一个或者一个都没有public类,所以,你只要把Dog前面的public去掉
就可以编译成功,public如果要有,必须与包含编译单元的那个文件的名字完全相符,而不是说
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
有main的class就要有public,如果你现在定义的是Dog文件,编译也是没有问题的。
至于内部类嘛
public class SL275
{
class Dog
{
private int weight;
public int getWeight()
{
return weight;
}
public void setWeight(int newWeight)
{
weight = newWeight;
}
}
public static void main(String[] args)
{
Dog d=new Dog();
d.setWeight(42);
}
}
这样就是了!多看书,书上说的很明白。
一部分。
其实,每个文件只能有一个或者一个都没有public类,所以,你只要把Dog前面的public去掉
就可以编译成功,public如果要有,必须与包含编译单元的那个文件的名字完全相符,而不是说
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
有main的class就要有public,如果你现在定义的是Dog文件,编译也是没有问题的。
至于内部类嘛
public class SL275
{
class Dog
{
private int weight;
public int getWeight()
{
return weight;
}
public void setWeight(int newWeight)
{
weight = newWeight;
}
}
public static void main(String[] args)
{
Dog d=new Dog();
d.setWeight(42);
}
}
这样就是了!多看书,书上说的很明白。
|
一个文件里只能有一个public class,有main的class应该是public
|
一个*.java文件只能有一个public类,而且要与文件名相同。
|
那么类SL275应定义为public,类Dog的public去掉,如果非要定义为public的话,从新建立一个文件然后在SL275中用import或package引入。
|
class Dog怎么是内部类呢?内部类是指将一个类定义置入另一个定义中。
|
在一个java文件中,只有主类的类型才能声明为public,并且也只能有一个public,要不然编译程序会找不到程序的入口.比方说有main()方法的类一定要声明为public
|
错误不是很清楚吗?
类Dog是公共的(public),应该在名为Dog。java的文件中被声明public class Dog
文件名叫Dag.java不就可以了吗?
类Dog是公共的(public),应该在名为Dog。java的文件中被声明public class Dog
文件名叫Dag.java不就可以了吗?
|
补充一点,一个*.java文件中不能有两个public类声明.