Java学习笔记:面向对象技术(4)——封装

参考视频:bilibili遇见狂神说

面向对象三大特性

1、封装

  • 该露的露,该藏的藏。

    • 我们程序设计要求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;

      低耦合:仅暴露少量的方法給外部使用。

  • 封装:数据的隐藏。

    • 通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息的隐藏。
//封装的作用
//对Student类中的属性进行封装
package 面向对象OOP.封装;

//学生类 private:属性私有。
public class Student {

    //private封装
    private String name;//名字
    private String id;//学号
    private char sex;//性别
}//当同包不同类中的Appliaction类调用Student类的属性时,效果如下👇👇👇

在这里插入图片描述

//点不出来被封装的属性,也就是说,被private修饰的属性,不发跨类调用。
//那么该如何在Application类中调用Student类的name属性和其他属性呢?

记住这句话就够了:属性私有,get/set

package 面向对象OOP.封装;

public class Application {
    public static void main(String[] args) {
        Student student = new Student();//实例化一个student对象
        //由于无法调用私有属性,所以调用Student类中的setName方法
        student.setName("秦疆");//给setName传递一个参数进去。
        
        //先看Studnet下文类,再看这条输出语句。
        System.out.println(student.getName());
    }
}
package 面向对象OOP.封装;

//学生类 private:属性私有。
public class Student {

    //private封装
    private String name;//名字
    private String id;//学号
    private char sex;//性别

    //提供一些可以操作这个属性的方法!
    //提供一些public的get和set方法
    
    //get 获得这个数据
    //这个写在下面会更直观一点,因为它是在serName方法之后执行的。
    //这个方法利用this,将Student类中的属性name作为返回值,然后在再由Appliaction类调出name的结果。
    public String getName(){
        return this.name;
    }
    //set 给这个数据设置值
    //Appliaction类中的初始化实例调用Student类中setName方法,进而将实例变量的值传递给setName的形参上。
    //然后由this调用本类中的name,使得本类中的name的值由null变成了秦疆。
    public void setName(String name){
        this.name = name;
    }
}
//自动生成get,set方法:Alt+insert

执行结果:

秦疆
  • 封装的实际用途是什么呢?
//正常一个人的年龄应为0-150岁之间
//那么如果输入的年龄是999岁,那就会报错。
student.setAge(999);//不合法的
//这样,封装就起到了作用
public void setAge(int age){
    if(age<150||age>0){
        this.age = age;
    }else{
        System.out.println("您输入的年龄有误");
    }
}
  • 封装的意义
    • 提高程序的安全性,保护数据。
    • 隐藏代码的细节。
    • 统一接口。
    • 提高了系统的可维护性。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值