《java学习笔记》之面向对象--封装

封装

一. 引入

1.1面向对象的三大特征:
封装,继承,多态
层层递进,因为前者所以后者
学好封装是为了后面打基础

二. 封装的概念

2.1什么是封装?
拿现实生活来举列子,我们日常用到的手机,电视,电脑,平板,等等都是进行了封装,将其内部的电路,芯片…都进行了封装。我们看不到里面的内部结构,我们也不关心里面的内部结构,我们只关心如何使用它们。

2.2封装有什么用?
学一个东西肯定要知道它有什么用?
那么我们从2.1就可以知道了,封装可以使内部结构稳定,不易遭到破坏,这对实际物体和代码都是一样的意义。而且我们不用去了解里面的构造,只需要了解如何使用。
总结作用:
1.保证内部结构的安全
2.屏蔽复杂,暴露简单。

2.3封装怎么实现?
第一步:对属性私有化(private关键字)
第二步:提供set和get方法。

2.4封装具体实现代码

public class Person {
    //将对象的属性进行私有化
    //因为每一个人的名字和no是不同的,这些变量属于对象级别的,所以用实例变量
    /*如果不将这些属性私有化会怎么样?
    * 那么任何人都可以对数据进行更改,这样数据是十分不安全的
    * */
    private String name;
    private int no;

    //无参构造
    public Person() {
    }

    //有参构造
    public Person(String name, int no) {
        this.name = name;
        this.no = no;
    }
    //如果不提供set和get方法会怎么样?
    //首先那么数据肯定是安全的,但是这样在别的地方就完全没有办法访问了,那么数据的意义就丧失了
    //所以我们要提供方法使得在别的地方能够进行对数据的读(get)和写(set)
    //set和get方法是有代码规范的最好按着这个规范写,提高代码的可读性和规范性

    //name的set方法
    public void setName(String name){
        this.name = name;
    }
    //nam的get方法
    public String getName(){
        return this.name;
    }

    //no的set方法
    public void setNo(int no){
        this.no = no;
    }
    //no的get方法
    public int getNo(){
        return this.no;
    }

    //如果使用IDEA可以使用 alt+inset 一键生成set和get方法
}

//我们来测试一下封装的如何?
public class PersonTest {
    public static void main(String[] args) {
        //创建Person对象
        Person person1 =new Person();
        Person person2 =new Person("小明",666);

        //读取Person对象的属性
        //假设我们直接读取,就会报错
        //System.out.println(person2.name);     Error:(11, 35) java: name 在 caopeng.javase.packaging.Person 中是 private 访问控制
        //所以我们使用set和get方法
        String strName1 = person1.getName();
        String strName2 = person2.getName();
        int no1 = person1.getNo();
        int no2 = person2.getNo();

        System.out.println(strName1 +" " + no1);//null 0
        System.out.println(strName2 +" " + no2);//小明 666

        //我们尝试对person1进行修改
        person1.setName("小红");
        person1.setNo(777);

        strName1 = person1.getName();
        no1 = person1.getNo();
        System.out.println(strName1 +" " + no1);//小红 777
    }
}

总结:

从此以后为了代码的安全和对数据的操作简便,以后我们都要对代码进行封装

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值