黑马程序员:Java中的说明符
----------------------------------android培训、java培训 期待与您交流! --------------------------
public class JavaModifiers {
/*Java中的说明符总结:(仅限总结知识点,因举例简单,可以自己尝试)
*
* A,类的说明符:public,default,final,abstract
* 1,在不同包之间相互引用类时,只可以引用包中申明为public的类,否则只可以在同一包中被访问
* 2,在不为类加访问说明符时,默认为default,只可以在同一包中被访问。
* 3,final,指在一个最终的类,不能派生出其他子类,即不可以被继承。主要用于创建一个不被修改的标准类。
* 4,当类中具有abstract的方法是,该类需要被申明为抽象的类。
*
*
* B,方法的说明符:public,protected,default,private,static,final,abstract,native,synchronized。
* 1,public,protected,default,private四种类型方法的访问控制比较:
* private的方法只可以在同一个类中被访问,即使某个类是从另一个类中派生出来的,也不可以直接访问父类中私有的方法。对于内部类,可以给其中某个方法传递一个外部类的对象,间接调用外部类的私有方法。
* default的方法可以在同一个类和同一个包中被访问
* protected的方法可以在同一个类、同一个包和不同包但具有继承关系的子类中被访问
* public的方法可以在同一个类、同一个包、不同包但具有继承关系的子类及不同包且没有任何关系的类中被访问
* 2,final类型确保某个函数的行为在继承过程中保持不变且不可以被overridden(覆盖)。通常在方法体积很小,而且不希望它被覆盖时申明为final。类中所有private和static方法都是final的。
* 3,abstract类型的类中没有方法体,即其行为没有被确定。
* 一个类中如果有抽象的方法,那么这个类也要被申明为一个抽象的类。
* 一个抽象的类不可以被实例化。
* 如果子类中没有实现抽象基类中所有抽象方法,则子类也必须申明为一个抽象类。
* 可以将一个没有任何抽象方法的类申明为abstract,避免由这个类产生任何对象。
* 如果一个基类中某些方法的行为没法确定,可将这个类设为abstract,并且在通过继承来重复使用代码的设计过程中,应该首选抽象基类,由子类自己去实现这种抽象方法。
*
* 4,native类型的方法,是指用户可以在java中使用,但不可以编写的方法。JNI(java native interface)是Java和本地应用程序之间的中介。程序员只需要编写一种版本的本地(native)应用程序和库,就可以和所有支持JNI的java虚拟机协调工作。
* 5,Interface中方法的修饰符
* java中的Interface(接口)中,所有方法缺省的都是abstract类型,所以不需要显示的加上abstract这个修饰符。
* 在接口中所有方法都是public的。所以其他类在实现接口的方法时,其中方法的访问权限不可以低于接口中方法的访问权限(类似于子类和基类中的方法覆盖),所以在实现一个接口时,一定要申明为public。
* Interface中申明方法时,不可以使用native、static、final、synchronized、private和protected等修饰符。
* 与public的类一样,public的接口必须定义在与接口同名的文件中。
* 接口中也可以有default的类型,但只可以在同一包中被访问。
* 接口中可以有成员变量,它们缺省的类型是public static final
*
* C,成员变量的修饰符
* 1,public类型的成员变量,即公共变量,可以被该变量所属类中的所有方法访问,也允许其他类在外部进行访问。 但这回会降低数据的安全性。可根据需要选择使用。
* 2,private类型的成员变量,即私有变量,只可在本类中被使用,外部类不可以直接使用,但可以在本类中定义一些方法,使外部类在调用这些方法时间接的访问这些变量。这样提高了安全性,但降低了程序的性能。私有变量是不可以被继承的变量。
* 3,protected类型的成员变量,即被保护的变量,允许在同一类中,同一包中,其位于同包中本类的子类中被访问。
* 4,如果在变量前面没有任何修饰符,只允许在本类和同一个包中被访问,从本类派生的子类位于其他包中,不可以访问本类中的这些变量。
* */
}