数据域封装,JavaSE

一.简介

在定义私有数据域的类外的对象是不能访问这个数据域的。但是经常会有客户端需要存取、修改数据域的情况。为了能够访问私有数据域,可以提供一个get方法返回数据域的值。为了能够更新一个数据域,可以提供一个set方法给数据域设置新值。get方法也被称为访问器,而set方法称为修改器。
getRadiusO方法返回半径值setRadius(newRadius)方法给对象设置新的半径,如果新半径为负,就将这个对象的半径设置为0。因为这些方法是读取和修改半径的唯一途径,所以,你完全控制了如何访问radius属性。如果必须改变这些方法的实现,是不需要改变使用它们的客户程序的。这会使类更易于维护。

二.代码

实现类

package com.zhuo.demo;

public class CircleWithPrivateDataFields {
    
    
    private double radius = 1;
    private static int numberOfObjects = 0;
    CircleWithPrivateDataFields() {
    
    
        numberOfObjects++;
    }
    CircleWithPrivateDataFields(double newRadius) {
    
    
        radius = newRadius;
        numberOfObjects++;
    }
    public void setRadius(double newRadius) {
    
    
        radius = newRadius > 0 ? newRadius : 0;
    }
    public double getRadius() {
    
    
        return radius;
    }
    public static int getNumberOfObjects() {
    
    
        return numberOfObjects;
    }
    public double getArea() {
    
    
        return radius * radius * Math.PI;
    }
}

测试类

package com.zhuo.demo;

public class TestCirclePrivateDataFields {
    
    
    public static void main(String[] args) {
    
    
        CircleWithPrivateDataFields mycircle = new CircleWithPrivateDataFields(5.0);
        System.out.println("半径为" + mycircle.getRadius() + "的圆的面积为" + mycircle.getArea());
        mycircle.setRadius(mycircle.getRadius() * 1.1);
        System.out.println("半径为" + mycircle.getRadius() + "的圆的面积为" + mycircle.getArea());
        System.out.println("创建的对象数量为" + CircleWithPrivateDataFields.getNumberOfObjects());
    }
}

三.运行结果

半径为5.0的圆的面积为78.53981633974483
半径为5.5的圆的面积为95.03317777109125
创建的对象数量为1

Process finished with exit code 0


猜你喜欢

转载自blog.csdn.net/weixin_42768634/article/details/113836388