访问权及四种Java类

来源:互联网 发布:网络剧二十八岁未成年 编辑:程序博客网 时间:2024/05/16 19:20

在Java中,除了public,private和protected之外,还存在着一种package(包访问权,无访问修饰符)访问权,是Java默认的访问权。


同一个类同一个包中的类 同一个包中的子类其他包中的子类其他包中的类public可被访问可被访问可被访问可被访问可被访问protected可被访问可被访问可被访问可被访问
package可被访问可被访问可被访问

private可被访问



 

Java类之文件类

  文件类,指在一个源代码文件中,在一个公共类之外存在的类。例如:

复制代码
public class SomeClass {    ...}class FileClass1 {//文件类    ...}    ...class FileClassN {//文件类    ...}
复制代码

  JDK规定一个源文件中只允许有一个公共类,所以文件类不可以定义为public,事实上,JDK只允许文件类具有包访问权,否则会产生语法错误。文件类一般对该文件中public类提供支持,或者是从属于这个public类。文件类和public类一般具有组合关系,即,存在的是“has a”关系(继承,是类之间存在“is a”关系)。

Java类之内部类

  内部类指在一个类中包含的另一个类,例如:

复制代码
public class OuterClass {    ...    class InnerClass1 {//内部类        //可以访问所有OuterClass的成员        ...    }    ...    class InnerClassN {//内部类        //可以访问所有OuterClass的成员        ...    }    ...}
复制代码

  一个外部类OuterClass可以有多个内部类。内部类可以有他自己的成员;在内部类中可以访问外部类OuterClass中的所有成员,是一种隐含的继承方式。内部类一般应用在专门处理其外部类延伸性的特殊运算及操作,例如,专门用来给外部类提供排序、搜索、线程等即时处理的代码。

创建内部类的两种方式:OuterClass outer = new OuterClass();OuterClass.InnerClass inner = outer.new InnerClass();OuterClass.InnerClass inner = new OuterClass().new InnerClass();

  与内部类相似,静态内部类指在一个类的内部包含有另外一个静态类,例如:

复制代码
public class OuterClass {    ...    static class StaticInnerClass1 {//内部静态类        //只可以访问外部类的静态成员        ...    }    ...    static class StaticInnerClassN {//内部静态类     //只可以访问外部类的静态成员        ...    }    ... }
复制代码

  如同不用创建对象就可调用静态方法一样,调用静态内部类的方法用如下方式:

OuterClass。StaticInnerClass.innerMethod();

Java类之本地类
  本地类指在一个方法中包含的类,也称作本地内部类,例如:

复制代码
public class SomeClass {    ...    void method() {        ...        class LocalClass {            //可以访问所有外部类的成员            localMethod() {                ...            }        }        ...    }    ...}
复制代码

  本地类不允许是静态的,也不可以有静态成员。本地类如同本地变量一样,只能在其所在的方法内部使用。本地类可以访问外部类的所有成员,因而也是一种特殊形式的继承。如果一个类的作用域和功能仅存于某个方法中,则应选择本地类。

Java类之匿名类

  匿名类,也称匿名内部类,指类的声明和创建对象在一个语句中完成。匿名类是Java语言的独创,实际上是一个无名的本地类。匿名类经常应用在对GUI组件,如按钮、菜单等的事件处理中:

复制代码
...AddButton = new JButton("Add");AddButton.addActionListener(new ActionListener() {    //匿名类进行AddButton按钮事件处理    public void actionPerformed() {        Add();//调用方法进行相加运算    }});...
复制代码

PS. 内部类和本地类可以再次嵌套,静态内部类和匿名类不可再次嵌套。

原创粉丝点击