黑马程序员技术交流社区
标题:
都在什么情况下类必须用public修饰
[打印本页]
作者:
董志超
时间:
2013-3-14 09:21
标题:
都在什么情况下类必须用public修饰
本帖最后由 猫腻 于 2013-3-14 13:49 编辑
都在什么情况下类必须用public修饰,为什么要修饰?private呢?
作者:
HM李帅
时间:
2013-3-14 09:33
允许外部随意访问的方法或属性用public
只允许类内部访问的方法或属性用private
原因是有些东西不能暴露在外面
比如你得 名字 应该封存在比如 用户 类的里面
不能随意一个人都可以在外部直接修改你得名字
作者:
朱志江
时间:
2013-3-14 09:38
用public修饰方便外部程序调用,想要方便调用外部程序必须用public
private只能修饰内部类,外部类不能用private修饰
作者:
爪哇攻城狮
时间:
2013-3-14 09:42
包与包之间可以使用的权限只有两种,public protected。
public protected default private
同一个类中 ok ok ok ok
同一个包中 ok ok ok
子类 ok ok
不同包中 ok
复制代码
作者:
沈文杰
时间:
2013-3-14 09:43
1.public(公有的):可以被该类的和非该类的任何成员访问。
2.private(私有的):仅仅可以被该类的成员访问,任何非该类的成员一概不能访问。(主要是隐藏数据来保证数据的安全性)
3.protected(保护的):仅仅可以被子类和类本身还有同一个包里的类访问
一个.class文件中只能有一个public类,且main方法必须放在这个public类中。
作者:
沉默de羔羊
时间:
2013-3-14 09:48
这里你需要明确java权限修饰符的使用范围:
有四个访问控制符,分别为: 默认、public、private、protected
下面是资料说法:
public 同一个类,同一个包、不同包中的子类、不同包中的非子类
pravite 只能在同一个类中访问
protected,可以在同一个类、同一个包、不同包中的子类访问
默认:在同一个类、同一个包中访问
那么我就总结下:
public:所有的类都可以访问。
private:只有在同一个类中才可以访问。
protected:相同包和相同类里面子类中都可以访问,没有继承关系的就无权访问。
默认:相同的类和相同包里,可以访问
作者:
马甲大王
时间:
2013-3-14 09:54
public 表公用外部可见,private只是本类可用,是私有的,外部访问必须通过这个类的公有方法访问
作者:
HM张超
时间:
2013-3-14 13:31
如果你的类需要别人引用那么你肯定要public的!只是你自己用那么私有的就可以了!
作者:
tianyun
时间:
2013-3-14 13:47
public表示公有访问权限,被public修饰的类属性及方法可以被处于任何包中的类访问,但你得在调用类中引入该类,方法improt 包.类
private表示私有访问权限,被private修饰的类的属性和方法只有本类才能访问
权限的引入有效解决类名重复的冲突,和实现了类的封装。
作者:
黑马-王鹏
时间:
2013-3-15 00:13
补充一点:一个“.java”可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。
其他用法楼上的都说了
作者:
聂斌
时间:
2013-3-15 02:24
本帖最后由 聂斌 于 2013-3-15 02:36 编辑
下面这种情况下必须使用public修饰,,直接上代码:
package packa;
class DemoA // 类不public那么其他包就访问不了, (a)
{
void show() //show方法也是相当于被封装了,,, (b)
{
System.out.println("demoa show run");
}
}
编译时有2个地方报错:
(a)
编译时提示 ---.DemoA不是public的,,,,,
原因:有了包,范围变大,一个包中的类要被访问,必须要有足够大的权限,,所以被访问的类要被public修饰,,DemoA这个类权限不够大,得public修饰,,
(b)
编译时提示----show() 在 packa.DemoA 中不是公共的;无法从外部软件包中对其进行访问...
因为类公有后,被访问的成员也要公有才可以被访问。show()得public,,如果类不是public,而里面的被访问的成员是public的也没用,, 所以那个show方法也得 public ,,
总结;包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰。 类公有后,被访问的成员也要公有才可以被访问。
public protected default private
同一个类中 ok ok ok ok private只在本类中有效,
同一个包中 ok ok ok
子类 ok ok
不同包中 ok
2... 还有一种情况下必须public
接口里面的成员都是public的,,那么子类的方法也得是public的权限得一样大,不能变,
接口定义时,格式特点:
接口里面定义变量必须是public static final修饰,,,
接口中的成员都有固定修饰符。
常量:public static final,,如果这里少写了final,只要是interface修饰的类,那么它会自动帮你加上final,少写static final,也会帮你加,少写public static final也会帮你加
方法:public abstract 这里不写public abstract,他也会帮你加,,因为你只要写了interface,他里面的成员都有固定修饰符,你少写哪个,就给你补哪个
注意::接口中的成员都是public的。
3...private :私有,权限修饰符中的一种:用于修饰类中的成员(成员变量,成员函数)。私有只在本类中有效。
class Person
{
private int age;
public void setAge(int a)
{
if(a>0 && a<130)
{
age = a;
speak();
}
else
System.out.println("feifa age");
}
public int getAge()
{
return age;
}
private void speak()
{
System.out.println("age="+age);
}
}
private int age; 这个age已经被私有化在这个类当中,那么这个类以外是不可能访问到,外界不能直接访问了,,,将age私有化以后,类以外即使建立了对象也不能直接访问。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2