2.2.1封闭的访问属性

为了数据的安全,我们不能让类和对象随便被调用,所以就有了限制访问属性的操作--------封装

 

封装,就是把数据和和对这些数据的操作放在一起,并且用这些操作把数据掩盖起来,是面向对象的基本概念之一,也是最核心的概念。

我们有一个非常直截了当的手段来保证在类的设计的时候做到封装:

1、所有的成员变量必须是private 的,这样就避免别人任意使用你的内部数据。

2、所有public的函数,只是用来实现这个类的对象或类自己要提供的服务的,而不是用来直接访问数据的。除非对数据的访问就是这个类及对象的服务。简单地说,给每个成员变量提供一对用于读写的get /set 函数也是不合适的设计。

 private  只能用于成员变量和成员函数

表明,这个成员变量或函数是这个类私有的,

所谓私有就是,只有在这个类的内部才能够去访问它。

按照常理说,定义所有成员变量的时候,都应该是私有的,除非你有非常合理的理由,只有让成员变量是私有的,才能保护这些变量不被外界随意的使用,才能够让这些变量,按照类的设计者自己的意图去发生改变,去被使用,因为我们定义的服务都是在类的内部,外部调用的时候只是传入了参数数值,而没有对成员变量的初始值进行干扰,在一定程度上保护了类操作的安全。

例如:

class pen{

        private  static int a;

        private  static  int b;

        public void  plus(int a){

           

                int fen = a+b;

        }


        public void fan(int b){

                int pen = a-b;

        }

}


另一个类里面创建对象调用

pen ta = new pen(); 

ta.plus(2); 

ta.fan(6);       


此时的调用对  ta  这个对象进行了的成员函数进行了赋值,

①②③

第一步运行完:  ta.这个对象的成员变量进行了初始化赋值  a = 0;  b = 0;

第二步运行完:   通过调用函数,传递参数, a = 2;  b = 0;   int  fen = 2+0=2 ;

第三步:同理,a = 2, b = 6;  int  pen = 2-6=-4;

这里我们发现第二步,虽然我们只是传递进去了一个参数,但我们仍然调用了plus函数,运行了函数,虽然我们没有传进去对应的参数  b  ,仍然用了初始化的成员变量b 参加了运算, 

这说明,所谓的封装privste  ,表示所私有的函数或变量只在本类中进行访问,他是在代码层面上的限制。

private

●只有这个类内部可以访问

● 类内部指类的成员函数和定义初始化

●这个限制是对类而不是对对象的

所有的不同对象之间可以互相访问别人的私有的成员

私有是针对类,而不是针对对象,意思只在一个类的内部,不在别的类,那么成员变量和成员

函数就可以相互访问,即使他是私有的。

问题:

为什么说private 是对类的而不是对对象的

(这句话到底是什么意思?private的访问属性到底限制的是什么?)

答:当成员变量被设为private 时,private 限制的是其他类使用当前类所创建的对象作为成员变量时,不可以访问此对象的类成员变量,也就是说这种情况属于跨类访问,限制类。

而当属于同一个类时,只要在类的范围内,例如成员函数中可以调用同一类所创建的对象的成员变量,这种属于相同类的不同对象,不限制对象。

综上所述,就是限制类,不限制对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值