JavaSE面向对象三大特性之一(封装性)

对封装性的理解:

当我们创建一个类的对象以后,我们可以通过"对象.属性"的方式,对对象的属性进行赋值.这里赋值操作要受属性的数据类型和存储范围的制约.
除此之外没有其他的制约条件.但是在实际问题中,我们往往需要给属性赋值加入额外的限制条件.这个限制条件就不能在属性声明时体现,我们只能通过方法进行限制条件的添加.同时我们需要避免用户再使用"对象.属性"的方式来进行对属性赋值.则需要将属性声明为私有的
-----此时,针对于属性就体现了封装性.

封装性的体现
我们将类的属性私有化(private),同时提供公共的(public)方法来获取(getXxx)和设置(setXxx)此属性的值.

通常在一个类中,属性都私有化(private),并且对外提供getter and setter方法
如果属性没有封装,那么在本类之外创建对象后,可以直接访问修改属性,不安全。

package com.lhz.java.test;## JavaSE面向对象三大特性之一(封装性)

//测试类
public class AnimalTest {
    public static void main(String[] args) {

    Animal a =  new Animal();
        a.name="小黑";
//        a.age=2;  // 'age' has private access in 'com.lhz.java.test.Animal'
//        a.legs=4; //'legs' has private access in 'com.lhz.java.test.Animal' 不能直接调了
        a.show();
        a.eat();
//        a.setLegs(-4);
//        a.show();
//        a.legs=5; 通过直接调属性赋值还是可以出来 但是是错误的信息
//        a.show(); 这个时候就要把不合理的方式(直接调属性这个方法)禁掉  通过权限修饰符不让人来直接调然后赋值
        a.setLegs(4);//一方面提供方法 通过方法去写限制条件 setLegs方法
        a.show();

    }

}
//创建一个Animal类
class Animal{

    String name;
    private  int age;
    private  int legs;
    //对属性私有化以后主要体现在两个方面
    //1.对属性的设置
    public void setLegs(int l){
        if(l>=0 && l%2==0 ){
            legs=l;
        }else{
            legs=0;
        }
    }
    //2.对属性的获取
    public int  getLegs(){
            return legs;
    }
    public void eat(){
        System.out.println("动物进食");
    }

    public void show(){
        System.out.println("name="+name+",age="+age+",legs="+legs);

    }

    //给属性 age加上private权限,想要在类外部访问私有属性,则需要提供公共的方法来获取和设置此属性的值然后来调它
    //对外提供一个获取age属性的方法(getter和setter方法)
    public int getAge(){
        return age;
    }
    public void setAge(int a){
        age = a;
    }
}


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值