Hello,大家好呀,我是Yize,今天是2月11日,农历腊月二十四,也是南方的小年,在这里祝各位南方的朋友小年快乐!

言归正传,今天我要来分享的内容是面向对象!

大家知道面向对象有三大特性:封装、继承、多态,是一个非常基础但核心的编程概念!

那么今天我们首先从封装开始,一起进入我们的快乐学习时间!

目录

什么叫类

private关键字

封装的作用

总结


什么叫类

在学习封装之前,我们首先要提出一个问题,什么叫类呢?类(Class)是构建程序的核心抽象单

元,他们是独立的、有逻辑的在代码中体现如下:

这是我在写拼图小游戏时进行的类的封装,APP的图标上有个小三角,我们称它为测试类,也叫作程序主入口,其中GameJFrame,LoginJFrame,RegisterJFrame就是我们要学习的类,其里面打包在一起的内容我们称为封装

测试类与我们要封装数据的类具体区别在哪呢?如下:

//学生类
public class Student {
    //xxx    
}


//学生测试类
public class StudentDemo {
    public static void main(String[] args) {
        //xxx
    }
}

=========================================================================

private关键字

在学习封装之前,我们要先了解一下private关键字:

private是一个修饰符,可以用来修饰成员(成员变量,成员方法)

被private修饰的成员,只能在本类进行访问,针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作

提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰

提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰

示例代码如下:

/*
学生类
*/
public class Student {
    //成员变量
    private String name;
    private int age;

    //构造方法(空参和全参)
    public Student (){};
    public Student (String name,int age){
        this.name = name;
        this.age= age;
    };

    //get/set方法
    public void setName(String n) {name = n;}

    public String getName() {return name;}    

    public void setAge(int a) {age = a;}

    public int getAge() {return age;}

    //show方法
    public void show() {System.out.println(name + "," + age);}
}


/*
学生测试类
*/

public class StudentDemo {
    public static void main(String[] args) {
        //创建对象
        Student s = new Student();
        //使用set方法给成员变量赋值
        s.setName("张三");
        s.setAge(30);

        s.show();

        //使用get方法获取成员变量的值
        System.out.println(s.getName() + "---" + s.getAge());
        System.out.println(s.getName() + "," + s.getAge());

    }
}

同时,这个学生类的内容也被我们称为标准JavaBean即:

  1. 私有化成员变量;
  2. 空参构造方法--带全部参数的构造方法;
  3. get/set方法。

这里,我们不得不去提一下构造方法和set/get方法以及this关键字了。

构造方法是一种特殊的方法

作用:创建对象 Student stu = new Student();

格式:

public class 类名{

    //构造方法
    修饰符 类名( 参数 ) {
        //xxx
    }
}

功能:主要是完成对象数据的初始化

set/get方法

至于set/get方法,通过代码我们能够看出,set方法可以安全修改其值,get方法能够获取值,即:

set 方法 = 给变量“赋值”的安全通道
get 方法 = 取变量值的“专用窗口”

this关键字

this修饰的变量用于指代成员变量,其主要作用是(区分局部变量和成员变量的重名问题

方法的形参如果成员变量同名,不带this修饰的变量指的是形参,而不是成员变量

方法的形参如果不与成员变量同名,不带this修饰的变量指的是成员变量

可以简单理解为:“this代表当前正在操作的对象”

现在我们就已经了解了标准JavaBean的基本格式要求。

=========================================================================

封装的作用

最后,我们可以正式去探讨封装的作用了,为什么要用封装成类?

我们可以将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问;

这样有什么优点呢?通过方法不是一样可以操作吗?

我们来想一下,如果我们将所有代码写在同一个类中,仅仅去打包成不同的方法,这样会出现以下问题:

数据暴露:任何代码均可直接修改nameage,导致状态不可控(如StudentUtils.age = -100);

逻辑分散:验证逻辑(如年龄非负)与数据操作耦合在方法中,难以维护;

无法扩展:若需新增属性(如学号),需修改所有依赖该数据的方法。

但是如果我们封装成类就不一样了,如下:

数据隐藏

通过private修饰属性,强制通过公共接口(方法)访问数据,这样外部代码无法直接修改age,必须通过setAge()方法,确保数据有效性,并且验证逻辑集中在一个方法内,修改时只需调整一处。

行为抽象

类将数据操作数据的方法绑定,形成独立的逻辑单元。

模块化与可维护性

类的内部修改(如新增属性)不影响外部代码,只要接口不变;并且相关数据和逻辑集中在一个类中,便于理解和维护。

支持继承与多态

封装是继承和多态的基础(这个我们目前不用去管)。

=========================================================================

总结

最后,我们就要去总结一下了!

1. 为什么定义成员变量要用private 修饰符?

强制通过方法控制数据访问防止外部随意修改导致数据非法或状态混乱;

2. 构造方法以及set/get方法都有什么作用呢?

构造方法主要是用来创建对象并对对象的属性进行初始化,set方法就是安全地修改成员变量的值,get方法就是安全地获取成员变量的值

3. 封装成类有什么需要注意的点吗?

保证功能单一性:比如有个 User 类,register 方法就专心完成用户注册流程,不掺杂登录等其他功能的逻辑。

降低类与外部的耦合度:比如一个计算类,应独立于调用它的业务类,只专注于自己的计算功能,不依赖特定业务场景的代码。

数据一致性:在 set 方法里增加对数据的验证。像设置用户年龄时,若输入负数就应拒绝,保证年龄数据合理。

见名知意

我们今天的内容就此分析完毕,后面会继续向大家分享一些有趣的知识!我们下次见!!!

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐