9.5 通过引用变量访问对象
9.5.1 引用变量和引用类型
- 要点提示:对象的数据和方法可以用点运算符(.)通过对象的引用进行访问
本质上说,类是一种引用类型,这意味着该类类型的变量都可以引用该类的一个实例
如: myCircle引用了一个Circle对象
Circle myCircle = new Circle();
注意:
在Java中,数组被看作是对象;数组使用new操作符创建的,一个数组变量实际上是一个包含数组引用的变量
9.5.2 访问对象的数据和方法
- 警告:
回想一下,我们使用例如 Math.pow(3, 2) 来调用Math类中的方法 ;但是我们不能对自己创建的诸如Circle这种类来使用 Circle.getArea() 这种用法。因为在Math类中的所有方法都是使用关键字static定义的静态方法。但是getArea()是实例方法,所以它是非静态的,必须使用例如 myCircle.getArea() 这种方式从对象调用
- 匿名对象:
有时候对象在创建之后不需要引用,这种情况下可以创建一个对象,而不将它明确地赋值给一个变量:
new Circle();
//或者
System.out.println("Area is " + new Circle(5).getArea());
9.7 静态变量、常量和方法
- 要点提示:静态变量被类中的所有对象所共享;静态方法不能访问类中的实例成员(即实例数据域和方法)
class Circle{
double radius;
Circle(double a){
radius = a;
}
double getRadius(){
return radius;
}
}
Circle类中的数据域radius是一个实例变量,它属于类中的某个特定的实例
如果要让一个类中的所有实例共享数据,那么就要使用静态变量,也称为类变量;静态变量将变量值存储在一个公共的内存地址,由于是公共的地址,当某一个对象修改了静态变量的值时,那么同一个类的所有变量都会收到影响。
静态方法不能调用实例方法或者访问实例数据域,因为静态方法和静态数据域不属于某个特定的对象
9.8 可见修饰符
可以在类,方法和数据域前使用public可见修饰符,这可以使得它们可以被任何其他类访问
若没有使用,则可以被同一个包中的任意一个类访问(称为包私有/包访问)
Java为类成员提供了 private 和 protected 修饰符
一般而言,数据域都应该被设置为私有的,所有的构造方法和方法都应该被设置为公有的
- 警告:private只能用于类的成员,public可以用于类或类的成员,在局部变量上两个都不能使用