本帖最后由 聂斌 于 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私有化以后,类以外即使建立了对象也不能直接访问。
|