2个java基础问题

njtimenowht 2008-10-30 02:00:00
1.java默认的的类访问权限是不是protected?还是public?

2.为什么一下这段代码编译可以通过,运行却会出错?在Editplus里

package abcd;
class ok
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
...全文
184 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
magicluo 2008-10-30
  • 打赏
  • 举报
回复
1.默认的是友好访问类型(friendly),或者说是包类型(package)的,或者说是默认的(default),不需要在类前加任何的修饰符号。
其可以被包中的其他类访问,但是如果子类和父类不处于同一个包中,则也无法访问。
访问权限范围:private < 友好类型< protected < public。
2.运行出错,你需要在编译时候使用javac -d . ok.java //-d参数是生成的类放在以包命名的目录中,因为你开头使用了package abcd ,你运行时候,的类名字应该是abcd.ok.class

njtimenowht 2008-10-30
  • 打赏
  • 举报
回复
2楼加了个public也不行,运行照样出错。

谁谁知道11楼的是什么意思吗?他这样说:
你的程序编译肯定是没问题的,但你应该直接就javac ok.java了,因为你又打包了,那在java ok就有错了
应该javac -d . ok.java运行用java -cp(或-classpath) . abcd.ok,然后运行正常,呵呵
njtimenowht 2008-10-30
  • 打赏
  • 举报
回复
1楼错啦。
public的类、类属变量及方法,包内及包外的任何类均可以访问;
protected的类、类属变量及方法,包内的任何类,及包外的那些继承了此类的子类才能访问;
private的类、类属变量及方法,包内包外的任何类均不能访问;
如果一个类、类属变量及方法不以这三种修饰符来修饰,它就是friendly类型的,那么包内的任何类都可以访问它,而包外的任何类都不能访问它(包括包外继承了此类的子类),因此,这种类、类属变量及方法对包内的其他类是友好的,开放的,而对包外的其他类是关闭的。

默认的包访问权限均小于public 和protected。
tiantiandaydream 2008-10-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyan_meixin 的回复:]
package abcd;
pubic class ok
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
[/Quote]
正解!
tiantiandaydream 2008-10-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ZangXT 的回复:]
默认的是包访问权限,小于public,大于protected.
[/Quote]
顶!
songyun870 2008-10-30
  • 打赏
  • 举报
回复
是..要跟包名相同的文件

.java文件保存的时候名字要和pulic class的类名完全一样..区分大小写
njtimenowht 2008-10-30
  • 打赏
  • 举报
回复
再问一下,是不是一定要存在一个跟包名相同的文件夹?
.java文件保存的时候要取什么名字呢?如果没有包的话,取ok.java就可以,
现在有个包package abcd.

还有,加了一个public 也是出错
jxxx2967 2008-10-30
  • 打赏
  • 举报
回复
同意楼上
seraphyong 2008-10-30
  • 打赏
  • 举报
回复
建议多看看JAVA基础知识 最前面的基础知识
dclwork 2008-10-30
  • 打赏
  • 举报
回复
1.java默认的的类访问权限为包访问权限(package access,有时也表示成为friendly)

2.为什么一下这段代码编译可以通过,运行却会出错?在Editplus里

package abcd;
class ok
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}

编译主要检查语法,main方法只能包含在public class类中,而且要于文件同名
dreamhunter_lan 2008-10-30
  • 打赏
  • 举报
回复
1、默认的是包访问权限,小于public,大于protected.
2、你的程序编译肯定是没问题的,但你应该直接就javac ok.java了,因为你又打包了,那在java ok就有错了
应该javac -d . ok.java运行用java -cp(或-classpath) . abcd.ok,然后运行正常,呵呵
lht821008 2008-10-30
  • 打赏
  • 举报
回复
学习
lht821008 2008-10-30
  • 打赏
  • 举报
回复
学习
lht821008 2008-10-30
  • 打赏
  • 举报
回复
学习
shihuaqino1 2008-10-30
  • 打赏
  • 举报
回复
第一个问题的答案:访问权限控制的等级,从最大到最小权限依次为:public、protected、包访问权限(没有关键字)和private。protected的意思是“就类用户而言,这是private。但对于任何继承与此类的导出类或其他任何位于同一个包内的类来说,它确实可以被访问的”。
1楼的说“默认的是包访问权限”这句话是对的,但后面的不对,因为包访问权限是小于public和protected。
AppleBoy2008 2008-10-30
  • 打赏
  • 举报
回复
默认时即就是不写修饰词,这时只有同类和同包下才可以访问。
lxj1234567 2008-10-30
  • 打赏
  • 举报
回复
学习中。过来学东西。
lxj1234567 2008-10-30
  • 打赏
  • 举报
回复
学习中。过来学东西。
gmh521 2008-10-30
  • 打赏
  • 举报
回复
默认是 default,但default不是java关键字。
public class ok{....}
wuyan_meixin 2008-10-30
  • 打赏
  • 举报
回复
package abcd;
pubic class ok
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
加载更多回复(1)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧