Java类基础结构

来源:互联网 发布:迎乐软件科技有限公司 编辑:程序博客网 时间:2024/04/30 07:34

                                            Java类基础结构

1.类声明:

[public] [abstract|final] class className [extends superclassName] [implements interfaceNameList]

{……}

l        abstract: 抽象类

l        final:表明该类不能被继承 

2.成员变量

[public | protected | private ] [static] [final] [transient] [volatile] type variableName;                 

l        static: 静态变量(类变量);相对于实例变量

l        final: 常量

l        transient: 暂时性变量,用于对象存档,用于对象的串行化

l        volatile: 贡献变量,用于并发线程的共享

3.成员方法

[public | protected | private ] [static] [final | abstract] [native] [synchronized]

returnType methodName([paramList]) [throws exceptionList] 

{statements}                

方法声明中的限定词的含义:

l        static: 类方法,可通过类名直接调用

l        abstract: 抽象方法,没有方法体

l        final: 方法不能被重写

l        native: 集成其它语言的代码

l        synchronized: 控制多个并发线程的访问

4. Java中类的限定词的作用范围比较

 

同一个类

同一个包

不同包的子类

不同包非子类

private

Y

 

 

 

default

Y

Y

 

 

protected

Y

Y

Y

 

public

Y

Y

Y

Y

5.实例变量、实例方法和类变量、类方法(static

l         实例变量和类变量

  每个对象的实例变量都分配内存,通过该对象来访问这些实例变量,不同的实例变量是不同的。类变量仅在生成第一个对象时分配内存,所有实例对象共享同一个类变量,每个实例对象对类变量的改变都会影响到其它的实例对象。类变量可通过类名直接访问,无需先生成一个实例对象,也可以通过实例对象访问类变量。

l         实例方法和类方法

  实例方法可以对当前对象的实例变量进行操作,也可以对类变量进行操作,实例方法由实例对象调用。但类方法不能访问实例变量,只能访问类变量。类方法可以由类名直接调用,也可由实例对象进行调用。类方法中不能使用thissuper关键字。

  class Member {

    static int classVar;

    int instanceVar;

    static void setClassVar(int i) {

     classVar=i;

     // instanceVar=i; // 类方法不能访问实例变量

    }

    static int getClassVar()

     { return classVar; }

    void setInstanceVar(int i)

     { classVar=i; //实例方法不但可以访问类变量,也可以实例变量

     instanceVar=i; }

     int getInstanceVar( )

     { return instanceVar; }

    }

    public class MemberTest{

     public static void main(String args[]) {

         Member m1=new member();

         Member m2=new member();

         m1.setClassVar(1);

         m2.setClassVar(2);

         System.out.println("m1.classVar="+m1.getClassVar()+"

                   m2.ClassVar="+m2.getClassVar());

         m1.setInstanceVar(11);

         m2.setInstanceVar(22);

         System.out.println("m1.InstanceVar="+m1.getInstanceVar

              ()+" m2.InstanceVar="+m2.getInstanceVar());

     }

    }

 
原创粉丝点击