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;
        }
  • 相关阅读:
    适度平衡树
    适度平衡树
    卡特兰(Catalan)数列
    卡特兰(Catalan)数列
    从二叉搜索树到平衡二叉搜索树
    java开发环境配置(windows下JDK7+tomcat7)
    Spring整合Hibernate的步骤
    C++重载加号运算符实现两个结构体的相加
    AABB包围盒、OBB包围盒、包围球的比較
    Html的空格显示
  • 原文地址:https://www.cnblogs.com/KeepCalmAndNeverSayNever/p/10451691.html
Copyright © 2011-2022 走看看