类中的域

在类中存在两种域,静态域和非静态域

静态域:类变量,使用static关键字申明,这个域被此类的所有对象共享,只有一份拷贝。能被所有实例或类方法引用。

非静态域:实例变量,每个实例都有自己的一份拷贝。

public class TTest {
    public static void main(String[] args) {
        //直接调用静态域
        System.out.println(TPerson.PI);
        //实例化类
        TPerson person = new TPerson();
        //调用非静态域
        System.out.println(person.radius);
        //调用静态域
        System.out.println(person.PI);
    }

}

class TPerson{
    //静态域
    public static double PI=3.14;
    //非静态域
    double radius = 10;
}

类中如果不加任何的修饰符,默认是public级的。这里有一个问题,一般静态域都是public级的。

为了完整的封装数据,不推荐实例变量(非静态域)是public级的,实例变量应该都申明为private级别,然后

利用方法实现对实例变量的读写。方法后面逐渐会学习。例如:

public class TTest {
    public static void main(String[] args) {
        //直接调用静态域
        System.out.println(TPerson.PI);
        //实例化类
        TPerson person = new TPerson();        
        //调用静态域
        System.out.println(person.PI);
        
        //通过方法调用静态域
        person.setRadius(200.00);
        System.out.println(person.getRadius());
    }

}

class TPerson{
    //静态域
    static double PI=3.14;
    //非静态域
    private double radius = 10;
    
    public double getRadius() {
        return radius;
    }
    
    public void setRadius(double _radius) {
        radius = _radius;
    }
}

 还有一种域叫做Final域,意味着在这个域不能被类中的方法修改,在声明final域时可以为它提供初始值。也可以在构造函数中对它进行初始化。

final double PI=3.14

final域因为不能在类中修改,所以只能在声明的时候初始化或者在构造函数中初始化,其他位置将会引发异常。final field version may not have been initialized.

posted on 2012-10-05 19:28  kiny  阅读(440)  评论(0编辑  收藏  举报