对于继承,static :hide;non static :override.
关键字:包访问权
当属性或方法前不声明访问权是默认为包访问权.
具有包访问权的方法或者属性只能被同一个包内的其他类访问.
处于相同目录的类之间具有默认的包访问权限.即可以访问其他文件的包访问权限方法.
//处于不同包类不能访问具有包访问权限的方法或属性.
package animal;
public class animal
{
void bite()
{
System.out.println("bite");
}
}
package test;
import animal.*;
public class test
{
public static void main(String args[])
{
animal animal=new animal();
animal.bite();//因为bite()只具有包访问权
}
}
// 处于相同目录的类之间具有默认的包访问权限.即可以访问其他文件的包访问权限方法.
public class test
{
public static void main(String args[])
{
animal animal=new animal();
animal.bite();
}
}
public class test
{
public static void main(String args[])
{
animal animal=new animal();
animal.bite();
}
}
package test;
import animal.*;
public class dog extends animal 继承但是不属于同一个包
{
public static void main(String args[])
{
dog dog=new dog();
dog.bite();//bite只是具有包访问权
}
}
PROTECTED 关键字:继承访问权限!
导出类可以使用在基类定义为PROTECTED的方法,对于同一个包的非继承关系类具有包访问权!
在同一个包中,可以通过在子类中超类的实例来访问超类的protected变量,而不在同一个包中,就不能这样做
protected 指定该变量可以被同一个包中的类或其子类访问,但是不能通过超类的实例来实现,在子类中可以覆盖此变量
public class animal
{
protected void bite()
{
System.out.println("bite");
}
}
public class test
{
public static void main(String args[])
{
animal animal=new animal();
animal.bite();
}
}
导出类可以使用基类的PROTECTED方法
package animal;
public class animal
{
protected void bite()
{
System.out.println("bite");
}
}
package test;
import animal.*;
public class dog extends animal
{
public static void main(String args[])
{
dog dog=new dog();
dog.bite();//bite只是具有包访问权
}
}
Private关键字
具有Private关键字的方法只能被定义该方法的内部
public class animal
{
private String s="fasf";
private void test()
{}
protected void bite()
{ System.out.println("bite");}
}
public class test
{
public static void main(String args[])
{
animal animal=new animal();
//animal.s="fafaf"; can not access private
// animal.test(); can not access private
animal.bite();
}
}
//私有构造函数
class privatetest
{
private privatetest()
{}
public static privatetest make()
{
return new privatetest();
}
public void f()
{
System.out.println("success");
}
}
public class test
{
public static void main(String srgs[])
{
privatetest pt=privatetest.make();
pt.f();
}
}
类的访问权限 类的访问权限只能是缺省或者是"public"
//包访问权限:
package animal;
class animal
{
protected void bite()
{ System.out.println("bite");}
}
package test;
import animal.*;
public class test
{
public static void main(String args[])
{ animal animal=new animal(); // can not access from outside package;
animal.bite();//因为bite()只具有包访问权
}
}