c面向对象 java_Java 面向对象 封装

1、封装

封装可以隐藏实现的细节,让使用者只能通过实现写好的访问方法来访问这些字段,这样一来我们只需要在这些方法中增加逻辑控制,限制对数据的不合理访问。方便数据检查,有利于于保护对象信息的完整性。便于修改,提高代码的可维护性。实现良好的封装,需要从两个方面考虑:把字段(成员变量)和实现细节隐藏起来,不允许外部直接访问

把方法暴露出来,让方法控制这些成员变量进行安全的访问和操作

所以,封装的含义是确保对用户隐藏敏感数据。为此,必须:将类变量/属性声明为private

提供公共的get和set方法来访问和更新private变量的值

2、get和set方法

private变量只能在同一类中访问(外部类无法访问它)。 但是,如果我们提供公共的get和set方法,则可以访问它们。

get方法返回变量值,而set方法设置该值。

两者的语法是,它们以get或set开头,后跟变量名,首字母大写:

例如:public class Person{

private String name; // private = 限制访问

// Getter

public String getName(){

return name;

}

// Setter

public void setName(String newName){

this.name = newName;

}

}

示例说明

get方法返回变量name的值。

set方法采用参数(newName),并将其赋值给name变量。this关键字用于引用当前对象。

但是,由于name变量被声明为private,因此我们不能从此类外部访问它:

例如:public class Main{

public static void main(String[] args){

Person myObj = new Person();

myObj.name = "cjavapy";  // error

System.out.println(myObj.name); // error

}

}

如果将变量声明为public,应该会输出:

cjavapy

但是,当我们尝试访问private变量时,会出现错误:

MyClass.java:4: error: name has private access in Person

myObj.name = "cjavapy";

^

MyClass.java:5: error: name has private access in Person

System.out.println(myObj.name);

^

2 errors

我们可以使用getName()和getName()方法访问和修改变量:

例如:public class Main{

public static void main(String[] args){

Person myObj = new Person();

myObj.setName("cjavapy"); // 将name变量的值设置为“cjavapy”

System.out.println(myObj.getName());

}

}

// 输出 "cjavapy"

3、封装的好处更好地控制类的属性和方法

可以将类属性设置为只读(如果仅使用get方法),也可以设置为只写(如果仅使用set方法)

灵活:程序员可以更改代码的一部分而不影响其他部分

增强数据安全性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值