zoukankan      html  css  js  c++  java
  • 面向对象的封装性


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

    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;
        }
  • 相关阅读:
    Vmware 添加虚拟磁盘
    2019-2020-2 《网络对抗技术》 Exp3 免杀原理与实践
    Docker 容器更换软件源
    Docker 查看容器 Linux 版本
    OpenMediaVault 5 进阶配置(四) Portainer 管理 Docker
    Portainer 中文文档:部署
    树莓派 部署 Docker 数据库容器
    通过Cookie统计上次网页访问时间
    用JavaMail通过QQ邮箱来发送邮件(第一篇博客,备忘)
    删掉双系统
  • 原文地址:https://www.cnblogs.com/KeepCalmAndNeverSayNever/p/10451691.html
Copyright © 2011-2022 走看看