Java语言实现对变量的封装,使用自定义类、和setter/getter方法对数组进行封装,及封装之后的灵活使用。

身为一名程序员,面向对象的三大特征你一定知道吧

继承,多态,封装

今天我们就来学习一下,如何对变量进行封装,以及使用自定义类、和setter/getter方法对数组进行封装。

一、封装变量

首先我们需要将设置的变量设置成为私有属性(private),

然后再写setter/getter方法进行封装。

class Test{
    private int age;
    
    public void setAge(int age) {
        this.age = age;
    }
    public int getAge() {
        return age;
    }
}

这就是最简单的封装变量了,因为变量是私有的,所以外界并不能访问,但是我们需要使用这个变量的时候应该怎么办呢?

这时我们就需要使用setter/getter方法,对外界提供一个接口,来访问这个变量。

调用封装的变量

封装之后我们应该怎么调用它呢?

变量赋值:Test.setAge(9);  // 将变量赋值 9 

因为setter方法提供的接口就是将参数传入,对变量进行赋值。

变量调用:Test.getAge();

getter方法里面只有return,而它的返回值就是这个变量本身,所以直接调用getAge()就可以得到他的值。

注意:在使用的时候,如果我们想修改这个变量的值,一定要使用setter方法进行修改,因为setter方法就是对变量进行赋值的方法。

不能直接使用getter方法获取变量值,然后进行修改。因为getter方法获取到的值不是变量,所以不可以直接修改。

例如,不可以这样写:

if (Test.age == 9) {
    Test.age = 10; //这是不对的
}

如果想对变量进行修改,我们可以这样写:

// 如果年龄为9,则修改为10
if (Test.age == 9) {
    Test.setAge(10); //这样写是对的
}

二、封装数组

(1)使用自定义类,对数组进行封装

对数组进行封装,一般都会使用这种方法,因为可以很方便的实现一些功能

下面是几个实例:

class Test{ // 对数组进行封装
	//对变量进行私有化
    private static int []array;
    private int index = 0; //数组下标
    
    public Test() { //初始化数组长度
    	array = new int[4];
    }
    public void insert(int temp) { //向数组中插入元素
    	array[index] = temp;
    	index++;
    }
    public void appointInsert(int temp, int i) { //修改指定位置的元素值
    	if (i >= 0 && i < array.length) {
        	array[i] = temp;
    	} else {
    		System.out.println("错误");
    	}
    }
    public int search(int temp) { //找到数组中某个值,并返回此下标索引
    	for (int i = 0;i < array.length;i++) {
    		if (array[i] == temp) {
    			return i;
    		}
    	}
    	return 0;
    }
    public void printArray() { //打印数组
    	for (int i = 0;i < 4;i++) {
    		System.out.print(array[i]+",");
    	}
    	System.out.println();
    }
}
class Main{
    public static void main(String[] args) {
        Test t = new Test();
        t.insert(0); //插入四个元素
        t.insert(1);
        t.insert(2);
        t.insert(3);
        System.out.println("赋值之后的数组: ");
        t.printArray();//打印数组
        t.appointInsert(99, 2); //修改第2个位置的元素为99
        System.out.println("修改之后的数组: ");
        t.printArray();
        System.out.println("查找结果: "+t.search(99)); //查找元素99所在位置,并打印出来
    }
}

运行结果如下:

 

本例中只写了查找、修改、增加,其它方法也类似。

(2)使用setter/getter方法对数组进行封装

我们这里使用setter/getter方法封装数组

class Test{
    private int[][] array = new int[4][4];
    
    public void setAge(int array[][]) {
        this.array = array;
    }
    public int[][] getArray() {
        return array;
    }
}

注意:但是这里我们封装的整个数组,而赋值的时候,也是只能对整体赋值,因为setter方法传入的参数就是整个数组,getter方法返回的也是整个数组。

如果我们需要对数组中的某个值进行赋值或修改,则应该这样写:

class Test{ // 对数组进行封装
    private static int [][] array = new int[4][4];

    public static void setArray(int temp, int i, int j) { //temp为将要赋予的值,ij为数组下标索引
        array[i][j] = temp;
    }
    public static int getArray(int i, int j) { //这里将属性设置为int,代表返回一个数,而不是整个数组
        return array[i][j];
    }
}
class TestOne { //调用这个变量,和使用它
	public void run() {
		  Test.setArray(4, 2, 3);//将数组中第2行3列的值,赋值为4
		    Test.setArray(5, 1, 2);
		    if (Test.getArray(1, 2) == 5) { //如果数组中这个位置的数为5,则将他修改
		        Test.setArray(6, 1, 2);
		        //Test.getArray[1][2] = 6; 这么写是不对的,因为左面不是变量
		    }
		    //打印这个数组
		    for (int k = 0;k < 4;k++) {
			    for (int w = 0;w < 4;w++) {
					System.out.print(Test.getArray(k, w));
				}
				System.out.println();
			}
	}    
}
class Main{
    public static void main(String[] args) {
        TestOne t = new TestOne();
        t.run();
    }
}

注意放在三个类里面

运行结果为:

我们可以看到,对数组2行3列,和1行2列进行了赋值,并对1行2列的值进行了修改。


好了,内容到这里就结束了,以上是关于封装变量的一些知识,是我自己在写项目中发现并解决的问题,然后进行了一些总结,来分享给大家。

如果发现有哪里不对,请多多指教,大家一起交流。

可以在下面评论指出问题,我会及时改正。

发布了22 篇原创文章 · 获赞 17 · 访问量 5862

猜你喜欢

转载自blog.csdn.net/weixin_42193813/article/details/89683520