黑马程序员——修饰符

来源:互联网 发布:29岁电工自学编程行骗 编辑:程序博客网 时间:2024/06/08 14:48

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

修饰符的可见性是Java 封装机制的一部分。封装允许分离方法执行的接口。修饰符的可见性是Java 封装机制至关重要的部分。封装允许分离方法执行的接口。带来的好处就是类内部的代码的细节可以被改变,同时不影响其他对象的使用。这是面向对象设计(最后不得不在某处使用这个词)的一个关键概念。

(1)Private(私有)

私有变量仅仅在创建它的类内部可见。这意味着它们在子类里不可见。这使变量除了当前类之外,绝缘于其他方法的修改。像是修饰语和封装里描述的,这对于将接口与接口实现分离开很有帮助。

class Base{

private int iEnc=10;

public void setEnc(int iEncVal){

if(iEncVal < 1000){

iEnc=iEncVal;

}

(2)public(共有)

public 修饰符可以应用于变量(域)或者类。它可能是你学习Java 过程中最先接触的修饰符。Java 虚拟机仅仅在一个声明为public 的类中查找神奇的main 启动方法。

public static void main(String argv[])

一个public 类有全局的作用范围,一个实例可以在程序内部或外部的任意位置创建。任何文件中只能有一个非内部类可以用public 关键字定义。如果你用public 关键字在一个文件中定义了超过一个非内部类,编译器将会报错。使用public 修饰符定义一个变量可以使它在任何位置适用。使用方法如下:

public int myint =10;

(3)protected(保护)

protected 有一点古怪。一个protected 变量在类,子类和同一个包内部可见,但不是全部可见。限制就是它在包内部的可见性可能超过你的预期。在同一路径下的类都是被默认为在一个包内,因此,protected 类将会可见。这就意味着一个protected 变量会比一个没有任何访问修饰符的变量更有可见性。一个没有访问修饰符定义的变量称为它有默认的可见性。默认可见性是说一个变量可以在类内部可见,而包内的其他类中均不可见,不在同一个包的子类内也不可见。

(4)静态的(static

虽然static 可以起到可见性修饰符的作用,但它不是直接的可见性修饰符。static 修饰符可以应用于内部类,方法和变量。功能代码经常放在static 方法中,例如Math 类有完整的功能方法,如:randomsin round。基本数据类型的包装类IntegerDouble 等等也有static方法处理包装过的基本数据类型,如返回符合字符串“2”的int 值。标记一个变量为static 表明每个类只能有一个副本存在。这是与普通的情况相区别。一般情况下,一个类的每个实例都有一个整型变量的副本。

(5)本地的(native

native 修饰符仅仅用来修饰方法,指明代码体不是用Java 而是用C++所写。native方法经常为平台的特殊目的所写,例如访问某些Java 虚拟机支持的硬件。另一个原因是为了需要获得更好的性能。一个native 方法以一个分号结尾,而不是代码块。例如下面的代码将会调用一个可能用C++所写的外部程序:

public native void fastcalc();

(6)抽象(abstract

粗略的看一下abstract 修饰符显得很容易,但是也会漏掉它的一些隐含内容。属于主考者很喜欢问的那种狡猾的,关于那类修饰符的问题。abstract 修饰符可以被用在类和方法上。当用在方法上时,表明方法会没有方法体(也就是没有花括号的部分),并且代码只能在子类执行时运行。但是,还有一些关于何时何处你能拥有abstract 方法的限制和包含这类方法的类的规则。如果一个类有一个或多个abstract方法,或者继承了不准备运行的abstract 方法,则它必须声明为abstract。另外一个情况是,如果一个类实现了接口但是不准备运行接口的每个方法。但这种情况很见。

(7)常量(final

final 修饰符可以用在类,方法和变量上。它跟遗传关系的意思很相近,因此很容易记忆。一个final 类可能从不被继承。另外一种想法是一个final 类不能作为父类。任何final类中的方法自动成为final 方法。如果你不希望别的程序员“弄乱你的代码”,这是一个有效的方法。另一个好处就是效率,编译器对于一个final 方法的工作很少。

(8)同步的(Synchronized

synchronized 关键字被用来保证不只有一个的线程在同一时刻访问同一个代码块。参看第七部分关于线程的内容来了解更多的关于它的运行的知识。

(9)瞬时(Transient

transient 修饰符是不常用的修饰符之一。它表明一个变量在序列化过程中不能被写出。

(10)不稳定的(Volatile

你可能对volatile 关键字有疑问。最坏的情况就是你确认它真的是一个Java 关键字。根Barry Boone 所说“它告诉编译器一个变量可能在线程异步时被改变”接受它是Java 语言的一部分,然后去担心别的吧。

(11)联合使用修饰符

可见性修饰符不能被联合使用,一个变量不可能同时是private publicpublic protectedprotected private。你当然可以联合使用可见性修饰符和我在下面列表中提及的修饰符。



0 0
原创粉丝点击