Java之封装

1.封装

1.1 什么是封装

在Java中,面向对象程序三大特性:封装、继承、多态,而封装就是将对象的状态(数据)和行为(方法)打包在一起,并隐藏对象的内部实现细节,只提供公开的接口(getter和setter方法)来与对象进行交互。

1.2 访问限定符

在Java中,主要通过类和访问权限来实现封装,访问限定符用于控制类、变量、方法或其他引用对象的访问级别。Java支持四种访问限定符
在这里插入图片描述

  1. private:私有访问级别。只对定义它的类可见。
  2. default:默认访问级别,同一个包中的类可见。当类没有定义访问限定符时,此时默认访问级别为default。
  3. protected:保护访问级别。对于同一包中的类及其子类是可见的。(介于public和private之间)
  4. public:公共访问级别。对于同一包中的所有类都是可见的。

一般情况下,我们建议:

  1. 成员变量定义为private
  2. 成员方法定义为public

建议不唯一,根据具体场景来使用。

在这里插入图片描述

1.3 包

1.3.1 什么是包

包其实就是一个文件夹,为了更好的管理,我们将类划分,把多个类收集成一组,就是一个包。

例如:我们将D盘中的文件划分,将Java语言相关的文件放到Java包中,将C语言相关的文件放到C语言包中,将下载的软件放到app这个包中……

在Java中,包是一种用来组织和管理类和接口的机制。它为开发者提供了一种逻辑分组的方式,使得代码更加模块化、结构化和易于管理。

1.3.2 导包

Java中提供了许多现成的类供我们使用,例如Date类,可以使用 java.util.Date 导入 java.util 这个包中的 Date
类。

例如:
在这里插入图片描述
在IDEA中会自动导入包,如果使用其他环境,可以去设置。

当我们需要用到 java.util 中的其他类时,可以使用 java.util.*
在这里插入图片描述

1.3.3 自定义包

  1. 包名和代码路径匹配,例如创建一个 com.bit.demo1 的包,那么它对应的路径就是 com/bit/demo1
  2. 包名尽量指定成唯一的名字(公司通常会将公司的域名的颠倒的形式来命名包)
  3. 当我们创建一个Java文件时,最上面的package语句就是,改java文件放到了哪个包中
  4. 如果一个类没有package语句,该类被放到默认包中。

例如,我们创建一个名为 com.bit.demo1 的包

自定义包的步骤:

  1. 右键src -> new -> package
    在这里插入图片描述

  2. 输入包名
    在这里插入图片描述
    在这里插入图片描述

  3. 此时可以看到我们的磁盘上的目录结构已经被 IDEA 自动创建出来了
    在这里插入图片描述

  4. 新建一个java类,我们可以看到顶部出现package语句
    在这里插入图片描述

  5. 如果出现 2 步骤所示的图片,可以更改设置
    在这里插入图片描述
    包教会的
    在这里插入图片描述

2. static

2.1 static 修饰成员变量

static修饰的成员变量,称为静态成员变量
静态成员变量,不属于某个具体的对象,而是所有对象共享的

静态成员变量的特征

  1. 又称为静态属性,不属于某个具体的对象,是类的属性,所有对象共享的
  2. 静态成员变量即可以通过类名直接访问,又可以通过对象访问,但是推荐使用类名来访问,因为这样可以更清楚地表明它是属于类而不是某个对象的。
  3. 存储在方法区。
  4. 生命周期随着类的加载而创建,随着类的卸载而销毁
public class Student {
   
    public int id;
    public String name;
    public int age;
    public String sex;
    public static String classRoom = "计科一班";

    public Student() {
   
    }

    public Student(int id, String name, int age, String sex) {
   
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
}

public class Test1 {
   
    public static void main(String[] args) {
   
        //可以直接通用类名访问
        System.out.println(Student.classRoom);

        //也可以通过对象访问,但是不建议,这种方法合法不合理
        Student student = new Student(1,"zhangsan",12,"男");
        System.out.println(student.classRoom);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值