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;
        }
  • 相关阅读:
    Redis入门指南
    大公司都有哪些开源项目~~~阿里,百度,腾讯,360,新浪,网易,小米等
    01 背包问题和完全背包
    糖果(动规)
    数的划分(动规)
    鸣人的影分身(动规)
    股票买卖(动规)
    大盗阿福(动规)
    公共子序列(动规)
    滑雪(动规)
  • 原文地址:https://www.cnblogs.com/KeepCalmAndNeverSayNever/p/10451691.html
Copyright © 2011-2022 走看看