博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象的封装性
阅读量:5297 次
发布时间:2019-06-14

本文共 2417 字,大约阅读时间需要 8 分钟。

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

package V;public class TestAnimal {    public static void main(String[] args) {        Animla a1=new Animla();        a1.name="花花";        a1.legs=-4;//这里赋值应该有限制,腿不应该是负数,赋值有点宽泛        a1.info();        a1.eat();    }}class Animla {    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);    }}

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

package V;public class TestAnimal {    public static void main(String[] args) {        Animla a1=new Animla();a1.setLegs(-4);        a1.setName("小花");        a1.info();        a1.eat();    }}class Animla {    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);    }    public void setLegs(int l){        if (l>0 && l%2==0){            legs=l;        }else{            System.out.println("输入数据有误");        }    }    public void setName(String n){        name=n;    }}

2.private 修饰的属性只能在本类中被调用,出了此类就不能被调用了

package V;public class TestAnimal {    public static void main(String[] args) {        Animla a1=new Animla();        a1.name="花花";        a1.legs=-4;//这里赋值应该有限制,腿不应该是负数,赋值有点宽泛        //a1.setLegs(-4);        //a1.setName("小花");        a1.info();        a1.eat();    }}class Animla {    //private 修饰的属性只能在本类中被调用,出了此类就不能被调用了    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 void setName(String n){        name=n;    }}

3.封装的思想:(1)将类私有化,(2)提供公共的方法(setter&getter)来实现调用

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

 

转载于:https://www.cnblogs.com/KeepCalmAndNeverSayNever/p/10451691.html

你可能感兴趣的文章
麦包包也看到了个性化推荐:数据驱动销售——个性化推荐引擎
查看>>
[原]NYOJ-子串和44
查看>>
django常用模板语言
查看>>
MySql数据库操作命令
查看>>
教科书般的亵渎题解
查看>>
Bing Maps进阶系列四:路由功能服务(RouteService)
查看>>
C++让类只在堆或栈上分配
查看>>
Nginx的配置文件简介及在Nginx中配置基于不同ip的虚拟主机
查看>>
Eclipse启动项目正常,放到tomcat下单独启动就报错的 一例
查看>>
linux和unix下crontab的使用
查看>>
re方法
查看>>
android sdk
查看>>
简洁明了的Noip考场策略 / 平时做题也适用
查看>>
关于指数循环节的证明
查看>>
org.apache.log4j与org.apache.commons.logging这两个包有什么区别
查看>>
原生JS实现雪花特效
查看>>
python 排序冒泡排序与双向冒泡排序
查看>>
Redis服务器中有75%受到恶意软件感染
查看>>
警惕黑客利用新方法绕过Office安全链接
查看>>
字符串(String)和 字符(Character)
查看>>