今天学习了下孙伟琴的《Java面向对象编程》,主要是看了第七章的Java语言中的修饰符。
一流的小说家和三流小书家都会写小说,两者的区别之一是,前者的语言流畅,善于运用贴切的修饰词汇来渲染主题,而后者的语言室苍白无力的,不能鲜明准确地反映主题。例如,从以下3段文章可以看出,是否使用修饰会产生不同的效果。
//没有修饰的语言描述
小东10:00起床,赶到学校,在教室门口被老师批评了一顿,小东走进教室。
//采用修饰词来反映小东知错就改
小东10:00起床,急急忙忙赶到学校,在教室门口被老师严厉地批评了一顿,小东惭愧地走进教室。
//采用修饰词来反映小东玩世不恭
小东10:00起床,不紧不慢赶到学校,在教室门口被老师严厉地批评了一顿,小东满不在乎地走进教室。
并不希望自己能再在文学上有多少创作能力,只希望能在写Java程序员人生道路,能做个一流的Java程序员。呵呵,所以还是好好学习下Java中的修饰符吧。
Java语言中的修饰符可以修饰类、变量和方法。灵活正确地运用这些修饰符,会使软件程序最贴切地模拟真实世界中的系统,并且有助于提高软件系统的可重用性、可维护性、可扩展性及系统的运行性能。这些修饰符是以下四种:
1、访问控制修饰符(public、protected、默认和private)
- public的访问级别最高,其次是protected、默认和private。
- 成员变量和成员方法可处于4个访问级别中的一个:公开、受保护、默认或私有。
- 顶层类可以处于公开或者是默认级别,顶层类不能被protected和private修饰。
- 局部变量不能被访问控制修饰符修饰。
2、abstract修饰符
- 抽象类不能被实例化。
- 抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类。
- 如果子类没有实现父类中的抽象方法,子类必须定义为抽象类。
- 抽象类不能被定义为private、final和static类型。
- 没有抽象构造方法。
- 抽象方法没有方法体。
- 用final修饰的类不能被继承。
- 用final修饰的方法不能被子类方法覆盖。
- private类型的方法默认为是final方法,因而不能被子类的方法覆盖。
- final变量必须是显示初始化,并且只能被赋一次值。
4、static修饰符
- 静态变量在内存中只有一个拷贝,在类的所有实例中共享。
- 在静态方法中不能直接访问实例方法和实例变量。
- 在静态方法中不能使用this和super关键字。
- 静态方法不能被abstract修饰。
- 静态方法和静态变量都可以通过类名直接访问。
- 当类被加载时,静态代码块只被加载一次。类中不同的静态代码块按它们在类中出现的顺序依次执行。
许多修饰符可以连用,例如:
private static final int MAX_COUNT = 1;
public static final void main(String args[]) {};
protected abstract void method();
当多个修饰符连用的时候,修饰符的顺序是可以颠倒的
private static final int MAX_COUNT = 1;
static private final int MAX_COUNT 1= 1;
finalstatic private int MAX_COUNT = 1;