Java基础巩固系列 面向对象的特征一:封装性

面向对象的特征一:封装与隐藏

问题:当创建了类的对象以后,如果直接通过“对象.属性”(s.name)的方式对相应的对象属性赋值的话,可能会出现不满足实际情况的意外,我们考虑不然对象来直接作用属性,而是通过“对象.方法”( s.setName() )的形式,来控制对象对属性的访问。实际情况中,对属性的要求就可以通过方法来体现。

举个栗子:

public class TestAnimal {

    public static void main(String[] args) {
        Animal a1 = new Animal();
        a1.name = "花花";
        a1.legs = -4;
        a1.info();
        a1.eat();
    }
}

class Animal {
    String name;    //动物的名字
    int legs;       //腿的个数

    public void eat() {
        System.out.println("动物进食");
    }

    public void sleep() {
        System.out.println("动物动物睡觉");
    }


    public void info() {
        System.out.println("name:" + name + " legs:" + legs);
    }

}

解决的办法:(封装性的思想)① 将类的属性私有化 ②提供公共的方法(setter & getter)来实现调用。

public class TestAnimal {

    public static void main(String[] args) {
        Animal a1 = new Animal();
//        a1.name = "花花";
//        a1.legs = -4;
        a1.setLegs(4);
        a1.setName("小花");
        a1.getName();
        a1.info();
        a1.eat();
    }

}

class Animal {
    private String name;    //动物的名字
    private int legs;       //腿的个数

    public void eat() {
        System.out.println("动物进食");
    }

    public void sleep() {
        System.out.println("动物动物睡觉");
    }


    public void info() {
        System.out.println("name:" + name + " legs:" + legs);
    }

    public void setLegs(int l) {
        if (l > 0 && l % 2 == 0) {
            legs = l;
        } else {
            System.out.println("输入有误");
        }
    }

    public String getLegs() {
        return legs;
    }

    public void setName(String n) {
        name = n;
    }


    public String getName() {
        return name;
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值