[置顶] 别说你懂修饰符――深入分析Java修饰符
1、范围介绍首先,我们要明白在Java中修饰符的作用主要有两种,1种是用来控制访问权限的,另外一种是用来控制其他方面的(比如值是不是可改,访问的方式,是不是可覆盖等等)。而,在访问权限方面,1般分为以下几种:类内可访问,包内可访问,子类可访问等几种范围。我们也主要围绕这几种范围进行分析。 2、变量的修饰符
1. 访问权限控制方面: // 变量的修饰符,关于访问权限控制方面
public String publicString = "public";
protected String protectedString = "protected";
private String privateString = "private";
String defaultString = "default"; 我们可以看到主要有4类修饰符,public,protected,private还有1个是默许的(default)。那末他们的访问权限如何呢?
2. 其他控制方面: class Test{
static String staticString = "static";
final String finalString = "final";
} 我们可以看到其他方面的控制修饰符主要有两个,static,final。
3、非构造函数的修饰符1. 访问权限控制方面 // 关于方法的修饰符
public void printPublic() {
System.out.println("public method");
}
protected void printProtected() {
System.out.println("protected method");
}
private void printPrivate() {
System.out.println("private method");
}
void printDefault() {
System.out.println("default method");
} 非构造函数的访问权限与变量的完全相同,这里不再赘述。 2. 其他控制方面: static void printStatic() {
System.out.println("static method");
}
final void printFinal() {
System.out.println("final method");
}
abstract void printAbstract(); 其中static和变量中的static具有相同的含义。final也表示,在继承关系中,这个方法是不可以被子类覆盖重写的。而abstract是指需要子类实现的抽象方法。 4、构造函数的修饰符构造函数的修饰符只有访问权限控制方面: class TestA {
//关于构造函数的修饰类
public TestA(){
}
protected TestA(int i){
}
private TestA(int i,int j){
}
TestA(String string){
}
} 其中,private限制构造函数后,其他类中将不能够通过new的方式来获得这个类的对象,能够有效控制对象的创建行动,这在有些设计模式中是非常重要的。 5、类的修饰符关于类的修饰符主要有4种,以下: // public,默许,abstract,final。
public class Test1 {}
class Test2{}
abstract class Test3{}
final class Test4{} 其中public,和默许(default)是访问控制修饰符,和变量的完全相同,不再赘述。
6、关于接口接口比较特殊,接口的修饰符只有public和默许(default),其控制权限和变量完全相同,不再赘述。
PS:至于变量为何必须声明为public static final请参照我的另外一篇博客: Java接口中的成员变量为何必须声明为public static final? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |