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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 银酱 中级黑马   /  2014-1-15 21:56  /  2391 人查看  /  24 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如题。。{:soso_e141:}

评分

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

查看全部评分

24 个回复

倒序浏览
如果你觉得其他包的类需要用到该类 就用protected 如果全部包都有一些类需要就用public 如果不需要访问就用default 如果不想被访问就用private 如果·不想被继承就用fina

评分

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

查看全部评分

回复 使用道具 举报

如果你觉得其他包的类需要用到该类 就用protected
如果全部包都有一些类需要就用public
如果不需要访问就用default
如果不想被访问就用private
如果不想被继承就用fina

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 银酱 于 2014-1-15 22:11 编辑
黄晓鑫 发表于 2014-1-15 22:05
如果你觉得其他包的类需要用到该类 就用protected
如果全部包都有一些类需要就用public
如果不需要访问就 ...

不是,我说的是类,不是类成员,我记得老毕说过可以这么写
public class A
{
}
但只有public可以 private什么的不能修饰类(内部类除外),但我忘了为什么可以用public了~
回复 使用道具 举报
因为权限够大 可以给他们类调用 如果其他类的权限够大 而调用的权限不够 还是不可以的
回复 使用道具 举报
刚才有一个错误就是private不能修饰类 只能修饰内部类 谢谢指导错误
回复 使用道具 举报
银酱 中级黑马 2014-1-15 22:27:45
7#
黄晓鑫 发表于 2014-1-15 22:15
因为权限够大 可以给他们类调用 如果其他类的权限够大 而调用的权限不够 还是不可以的 ...

是这个意思吗?
public class A
{
}
那么这个A类所有成员都能随意访问,而不用再在成员前面修饰public了是吗?
回复 使用道具 举报
淡然不是啦,成员是成员 类是类的 不能混了。
回复 使用道具 举报
不是的 类加public是方便与其他类创建这个对象并调用这个对象 而这个对象的修饰符必须是公有的才创建的到
比如你想去访问你爸爸 可能你爸爸在公司 你根本不知道你爸爸在公司的哪里 只有你爸爸跟你说我在公司的xx地方 你才找的到他是不是 不然你根本无法找到他
回复 使用道具 举报
黄晓鑫 发表于 2014-1-15 22:17
刚才有一个错误就是private不能修饰类 只能修饰内部类 谢谢指导错误

public class A
{
}
class B extends A
{
}
class TestDemo
{
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
        }
}

编译出错:
TestDemo.java:1: 错误: 类A是公共的, 应在名为 A.java 的文件中声明
public class A
       ^
1 个错误
错误原因有点看不懂~~
回复 使用道具 举报
类可以用public,默认(啥也不写) abstract, final 和
public:都可访问,同意源程序文件 同一包 不同包(import)
啥也不写的话 只能在同一源程序文件和同包中引用
回复 使用道具 举报
这个问题不包括内部类吧 如果算内部类 我的回答也有问题了
回复 使用道具 举报
黄晓鑫 发表于 2014-1-15 22:33
不是的 类加public是方便与其他类创建这个对象并调用这个对象 而这个对象的修饰符必须是公有的才创建的到
...

创建的对象怎么用修饰符,没听明白;
比如
public class A
{
        public void show()
        {
                System.out.println("haha");
        }
}
class B
{
        void show()
        {
           A a=new A();
                a.show();
        }
}
我怎么用A类。。我发现我怎么编译都是错的~郁闷
回复 使用道具 举报
因为B类的权限不够大 A类一个是老板(public) B类一个是职工(default) 一个职工叫老板去做事情 你觉的可能吗?

点评

我试了,B类加public和B类成员都加public都不行,错误弹的更多了。你试试看。  发表于 2014-1-15 22:58
回复 使用道具 举报
不冬眠的蚂蚁 发表于 2014-1-15 22:42
类可以用public,默认(啥也不写) abstract, final 和
public:都可访问,同意源程序文件 同一包 不同包(im ...

哦,关于包那方面的啊,我还没学到。
对了,下面代码为什么会编译失败啊
public class A
{
        public void show()
        {
                System.out.println("haha");
        }
}
class B
{
        void show()
        {
           A a=new A();
                a.show();
        }
}
回复 使用道具 举报
我不是说了吗 你这个连主函数都没有 而且B的权限要大于A的权限 这个在同一个类中可以不考虑权限问题
回复 使用道具 举报
黄晓鑫 发表于 2014-1-15 23:00
我不是说了吗 你这个连主函数都没有 而且B的权限要大于A的权限 这个在同一个类中可以不考虑权限问题 ...

主函数有的,我怕长没复制,B权限这么大于A权限啊,我试过B是public类 一样报错;
全代码入下:
public class A
{
        public void show()
        {
                System.out.println("haha");
        }
}
public class B
{
        public void show()
        {
           A a=new A();
                a.show();
        }
}
class TestDemo
{
        public static void main(String[] args)
        {
        }
}
回复 使用道具 举报
你的类前面的public去掉 就可以了 不然访问权限过大
回复 使用道具 举报
本帖最后由 银酱 于 2014-1-15 23:34 编辑
黄晓鑫 发表于 2014-1-15 23:09
你的类前面的public去掉 就可以了 不然访问权限过大

网上搜了一下好像是
java中规定文件名要与public 类的类名保持一致 原因好像很复杂,我还看不太懂。。我试了下把文件名改为A,然后javac A就通过编译了,不过肯定不能运行,因为主函数名不是
回复 使用道具 举报
嗯 好像我学习到包里面毕老师有这样讲过 又加深了知识 呵呵
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马