final
被final声明的属性其值通常是不可修改的,所以只有get方法,没有set方法。并且变量要大写,如下:
private final String COUNTRY="中国";
- 使用final声明的属性为常量,常量不可修改。
- final声明的类不能被继承。
- final声明的方法不能被子类重写。
static
static声明的属性为全局属性,多个对象共享同一个内存空间。
static声明的变量为静态变量,声明的方法为静态方法,静态变量和静态方法都是被该类所有对象所共享的。
static变量和static方法的调用:直接用类名调用,类名.变量名/类名.方法名
,如
public class Person {
private static String name="wang";
}
Person.name;
注意:在静态方法中不能访问非静态变量和非静态方法,但是在非静态方法中可以访问静态变量和静态方法。
包
是在使用多个类或接口时,为了避免名称重复而采用的一种措施,类似于操作系统中的文件目录。
目的:
- 避免重名冲突。
- 实现访问权限控制。
声明方式:package 包名.子包名 .子子包名;包名必须采用小写英文字母。
包的导入
如果要在一个类中导入另一个包中的类,需用到import,例如
package testone;
import com.wang.Person;
public class Test {
public static void main(String[] args) {
Person p=new Person();
}
}
表示在包testone的类Test中导入包com.wang中的类Person。
包的访问权限
-private:可以定义方法、属性,但都不能被类的外部看到
-default:可以在本包中的任意地方访问
-protected:保护,不同包的非子类不可以访问
-public:公共的,都可以访问,不受任何的限制
范围 | private | default | protected | public |
---|---|---|---|---|
同一类 | 可以 | 可以 | 可以 | 可以 |
同一包中的类 | 可以 | 可以 | 可以 | |
不同包的子类 | 可以 | 可以 | ||
其它包中的类 | 可以 |