【Java SE】类和对象(2)----封装

5.1封装

封装是面向对象编程的三大特性之一(另外两个是继承和多态),其核心思想是将数据(属性)和行为(方法)捆绑在一个单元(类)中,并对外隐藏内部实现细节。通过封装,可以控制对类中数据的访问权限,防止外部代码直接修改内部状态,从而提高代码的安全性和可维护性。

封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。

Java中主要通过类和访问权限来实现封装的:类可以将数据以及封装数据的方法结合在一起,而访问权限永安里控制方法或者字段能否直接在类外使用。并且提供了4中访问限定符。

5.2访问限定符

public:  是最开放的访问级别,被修饰的成员或类可以被任何其他类访问。

protected:  修饰的成员可以被同一包内的其他类访问,也可以被不同包中的子类访问。

default:  不使用任何访问修饰符时,成员或类具有包私有访问权限,只能在同一个包内访问。

private:  最严格的访问级别,被修饰的成员只能在定义它们的类内部访问。

修饰符同类同包子类不同包
public
protected
default
private

说明

  • 优先使用最严格的访问级别,遵循最小权限原则
  • 成员变量通常设为private,通过公共方法提供访问
  • 仅在必要时使用public修饰类和方法
  • protected主要用于需要被子类继承修改的成员
  • 包私有适用于只在包内使用的实现细节

public class Computer {
    private String cpu;
    public String screen;
    String brand;

    //构造方法
    public Computer(String cpu, String screen, String brand) {
        this.cpu = cpu;

        this.screen = screen;
        this.brand = brand;
    }

    //提供公共方法
    public String getCpu() {
        return cpu;
    }
    public void setCpu(String cpu) {
        this.cpu = cpu;
    }
    public String getBrand() {
        return brand;
    }
    public void setBrand(String brand) {
        this.brand = brand;
    }
}
public class Test {
    public static void main(String[] args) {
        Computer p1 = new Computer("i9","16g","2k","hw");
        //System.out.println(p1.cpu);
        System.out.println(p1.screen);
        System.out.println(p1.brand);
    }
}

以上代码只演示了private,public,default ;

注意:以上代码分为两个不同的类,如果在同一个类中,则可以调用main方法;一般情况下成员变量设为private,成员方法设置为public。

5.3封装的关键步骤

①使用访问修饰符

通过private,protected,public等修饰符控制访问权限

②提供公共方法(Getter/Setter)

通过公共方法 (  如getCpu(),setCpu(......)  ) 间接访问私有属性,可在方法中添加逻辑控制

③提供构造方法封装

通过构造方法初始化对象时,可以强制校验参数或限制创建条件。

5.4包的概念

包是对类,接口等的封装机制的体现。

作用:在同一个工程中,允许存在相同名称的类,同时提高代码的可维护性。

命名:通常采用反转域名的方式(.com.101.www)

包的目录结构:

src/  
  └── com/  
      └── example/  
          └── mypackage/  
              └── MyClass.java  
 
①导入其他包的类或接口时使用 import 语句:
import java.util.List; // 导入单个类  
import java.util.*;     // 导入整个包(不推荐,可能引发冲突)  
②通过 static import 直接导入类的静态成员(方法或字段):
import static java.lang.Math.PI;  
System.out.println(PI); // 无需写 Math.PI  

常用内置包示例:

  • java.lang:核心类(自动导入,如 StringSystem)。
  • java.util:集合框架(ListMap)。
  • java.io:输入输出流。
  • java.net:网络编程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值