美文网首页
java面向对象的三大特征 之 封装

java面向对象的三大特征 之 封装

作者: 山坡上的斐德洛 | 来源:发表于2018-12-03 18:49 被阅读0次

    面向对象的三大特征:

    • 封装
    • 继承
    • 多态

    封装

    public class Demo1 {
        public static void main(String[]args){
            Person lxl = new Person();
    
            // id成员变量中加了一个private后,这个成员变量不能直接使用了。
            // lxl.id = 321;
    
            lxl.name = "逗比";
            // 这里出现了一个问题,不符合生活逻辑,【解决方法看下面】
            lxl.age = -16;
            lxl.gender = '男';
            // 通过函数进行修改,获取成员变量,有一个好处就是:【可以对传入的值进行判断】
            lxl.setId(10);
    
            System.out.println("Name: " + lxl.name + " Age: " + lxl.age +
                    " Gender: " + lxl.gender + " id: " + lxl.getId());
        }
    }
    
    
    /*
     * 问题:
     *   代码不会判断你传入的参数是否与生活实际有冲突
     *   有一些代码符合代码逻辑,但是不符合生活逻辑
     *
     * 思考:
     *   在对成员变量进行复制的时候,基于语法规范的情况下,要对数据进行
     *   一定的约束和判断,让它符合生活逻辑
     *
     * 【封装思想】
     *   权限修饰符:
     *       public:公开的,公用的。使用public修饰的成员变量或者说成员方法任何人
     *           都可以通过对象直接使用
     *
     *       private:私有的。如果使用private修饰的成员变量或者说成员方法只能在【类内】
     *           使用,类外谁都不能用
     *
     *  【问题】
     *      用private修饰的成员变量和成员方法,类外都不能使用,那怎么给成员变量进行赋值操作?
     *  【解决方法 setter 和 getter方法】
     *      setter方法是提供给【类外】用来设置【私有化成员变量的方法】
     *      getter方法是提供给【类外】用来获取【私有化成员变量的数据】
     *  【面对传入的成员变量不符合生活逻辑的问题】
     *      可以在setter方法中对传入的值进行判断
     *  【封装的好处】
     *      1. 提高代码的安全性
     *      2. 操作数据简单
     *      3. 可以隐藏一部分代码 JAR
     * */
    class Person{
        // 成员变量
        String name;
        private int id;
        int age;
        char gender; // 性别
    
        // 成员方法
        public void winner(){
            System.out.println("Winner winner chicken dinner");
        }
    
        /*
         * 完成私有化成员变量的setter 和 getter方法
         * setter(getter)方法的要求:
         *   set(get)成员变量名(所需参数)
         *   成员变量名首字母大写
         * */
        public void setId(int n){
            id = n;
        }
        public int getId(){
            return id;
        }
    }
    

    相关文章

      网友评论

          本文标题:java面向对象的三大特征 之 封装

          本文链接:https://www.haomeiwen.com/subject/cdkucqtx.html