Java面向对象之封装

封装(Java面向对象三大特征之一)

1.成员(全局)变量和局部变量

  • 类中位置不同 ,成员变量在类中方法外,局部变量在方法内部或方法声明上;
  • 内存中位置不一样,成员变量在(堆内存) ,局部变量在(栈内存);
  • 作用域不一样,成员变量可以多方法共享,包括其他类里的方法,局部变量只有本方法可以使用;
  • 生命周期不同,成员变量随着对象的存在而存在,随机对象销毁而销毁

​ 局部变量随着方法调用而存在,随着方法调用结束而销毁;

  • 初始化值不一样:成员变量有默认初始化值;局部变量没有初始值,必须先定义,赋值才能使用。

2.注意

同一方法中,不允许出现同名局部变量;

不同方法中,可以出现同名局部变量;

在同一类中,成员变量和局部变量同名时,局部变量有更高得优先级(就近使用);

3.为什么要使用封装

封装的思想

  • 封装是面向对象三大特征之一,是面向对象编程语言对客观世界的模拟,客观世界里成员变量都隐藏在对象内部,外部是无法直接操作的。

  • 封装的原则是将类的信息隐藏在类内部,不允许外部程序直接访问,而是要通过该类提供的方法来实现对象隐藏信息的操作和访问,成员变量 private 同时对应的gettter/setter方法

  • 封装好处,通过方法来控制成员变量的操作,提高代码的安全性,把代码用方法进行封装,提高代码的复用性,提高系统独立性,提高软件可重用性。

封装的两个大致原则

把尽可能多的东西藏起来,对外提供便捷的接口;

把所有的属性藏起来;

4.如何实现封装

  1. 属性的可见性——> 设为private,防止错误的修改
  2. 创建公有的getter/setter方法——> 用于属性读写
  3. 在setter/getter方法中加入属性控制语句——> 对属性值的合法性判断

private关键字

  • private是一个修饰符,可以修饰成员(成员变量,成员方法)
  • private 修饰成员,只能在本类进行访问,其他类访问pirvate修饰的属性,必须通过专门方法
    • getter方法 用于获取私有成员变量的值,方法用public 修饰
    • setter方法 用于设置私有成员变量的值,方法用public 修饰
  1. 修改属性的可见性来限制对属性的访问
public class Dog{
    private int age;// 成员变量私有化
}
  1. 3.创建一对赋取值方法,用于对私有属性的访问;

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

public void setAge(int age) {
        // 判断输入的是否符合要求
        if (age<=0){
            this.age=60;// 如果赋值不合法,强制给定60,然后结束方法
            System.out.println("年龄大于0喔");
            return;
        }
        this.age = age;// 合法
    }

 public int getAge() {
        return this.age;
    }
 public void print(){
        System.out.println("年龄:"+age);
    }
}
// 测试类
public class TestDog {
    public static void main(String[] args) {
        Dog dog=new Dog();
        dog.setAge(80);// 合法
        System.out.println(dog.getAge());// 打印输入值
        dog.print();
    }
}

实现封装的两种方式:

1.隐藏属性

2.包机制(导包用import)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值