Java封装

在面向对象程序设计方法中,封装(Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装是面向对象的一大特性。

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。

封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

适当的封装可以让程序更容易理解与维护,也加强了程式码的安全性。

封装的优点

  • 良好的封装能够减少耦合。
  • 类内部的结构可以自由修改。
  • 可以对成员变量进行更精确的控制。
  • 隐藏信息,实现细节。

实现Java封装的步骤

为属性封装:private 属性类型 属性名称;

为方法封装:private 方法返回值 方法名称(参数列表){}

package charjava;

public class java9 {
   private String name; // 属性封装
   private void Person() {  // 方法封装
   
   }
}

getter和setter方法

属性或方法封装后,不能由对象直接进行访问;为了解决属性必须封装且又必须访问的矛盾,在Java开发中对于私有属性的访问有以下的明确定义:”只要是被封装的属性,则必须通过setter和getter方法设置和取得。

例:

package charjava;

public class java9 {
    public static void main(String[] args) {
        Person per = new Person();  // 声明并实例化对象
        per.setName("张三"); // 调用setter设置姓名
        per.setAge(30); // 调用setter设置年龄
        per.tell(); // 输出信息
    }
}

class Person {
    private String name; // 声明姓名属性
    private int age; // 声明年龄属性
    public void tell() {   // 取得信息的方法
        System.out.println("姓名:" + getName() +",年龄:" + getAge());
    }
    public String getName() {  // 取得姓名
        return name;
    }
    public void setName(String name) { // 设置姓名
        this.name = name;
    }
    public int getAge() { // 取得年龄
        return age;
    }
    public void setAge(int age) { // 设置年龄
        this.age = age;
    }

}

采用this关键字是为了解决实例变量(pirvate String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。 

关于private的补充说明

  1. 类中全部属性都必须封装,封装之后的属性必须通过setter和getter方法进行访问。
  2. 面向对象的封装本身并不是单指private关键字,private声明的属性或方法只能在其类的内部被调用,而不是在类的外部被调用。
  3. 正常情况下,类中的方法直接写上方法名称就可以完成本类中的方法调用,如果在此时非要强调是本类中的方法,也可以在调用的时候按”this.方法名称()“的形式编写:

public void tell() {

         System.out.println("姓名:" + this.getName() + ",年龄:" + this.getAge());

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值