• (2)java 封装


    封装

    封装

    它也是面向对象思想的特征之一。面向对象共有三个特征:封装,继承,多态。

    l  封装表现:

    n  1、方法就是一个最基本封装体。

    n  2、类其实也是一个封装体。

     

    l  封装的好处:

    n  1、提高了代码的复用性。

    n  2、隐藏了实现细节,还要对外提供可以访问的方式。便于调用者的使用。这是核心之一,也可以理解为就是封装的概念。

    n  3、提高了安全性。

     

    1.1     私有private

    实例

    描述人。Person

    属性:年龄。

    行为:说话:说出自己的年龄。

    class Person {

       

     

        publicvoid show() {

            System.out.println("age=" + age + ",name" + name);

        }

    }

     

    publicclass PersonDemo {

        publicstaticvoid main(String[] args) {

            // 创建Person对象

            Person p = new Person();

            p.age = -20; // 给Person对象赋值

            p.name = "人妖";

            p.show(); // 调用Person的show方法

        }

    }

     

    私有

    class Person {

        privateintage;

        private String name;

     

        publicvoid show() {

            System.out.println("age=" + age + ",name" + name);

        }

    }

     

     

     

    取值赋值方法

    一般对成员属性的访问动作:赋值(设置 set),取值(获取 get),因此对私有的变量访问的方式可以提供对应的 setXxx或者getXxx的方法。

    class Person {

        // 私有成员变量

        privateintage;

        private String name;

     

        // 对外提供设置成员变量的方法

        publicvoid setAge(int a) {

            // 由于是设置成员变量的值,这里可以加入数据的验证

            if (a < 0 || a > 130) {

               System.out.println(a + "不符合年龄的数据范围");

               return;

            }

            age = a;

        }

     

        // 对外提供访问成员变量的方法

        publicvoid getAge() {

            returnage;

        }

    }

     

    l  总结:

    类中不需要对外提供的内容都私有化,包括属性和方法。

    以后再描述事物,属性都私有化,并提供setXxx getXxx方法对其进行访问。

    l  注意:私有仅仅是封装的体现形式而已。

     

     

     this关键字

    1.1.1    成员变量和局部变量同名问题

    当在方法中出现了局部变量和成员变量同名的时候,那么在方法中怎么区别局部变量成员变量呢?可以在成员变量名前面加上this.来区别成员变量和局部变量

    class Person {

        privateintage;

        private String name;

       

        publicvoid speak() {

            this.name = "小强";

            this.age = 18;

            System.out.println("name=" + this.name + ",age=" + this.age);

        }

    }

     

    class PersonDemo {

        publicstaticvoid main(String[] args) {

            Person p = new Person();

            p.speak();

        }

    }

     

     

     对象的内存解释

    class Person {

        privateintage;

        publicint getAge() {

            returnthis.age;

        }

        publicvoid setAge(int age) {

            this.age = age;

        }

    }

    publicclass PersonDemo {

        publicstaticvoid main(String[] args) {

            Person p = new Person();

            p.setAge(30);

            System.out.println("大家好,今年我" + p.getAge() + "岁");

        }

    }

     

    n  this到底代表什么呢?this代表的是对象,具体代表哪个对象呢?哪个对象调用了this所在的方法,this就代表哪个对象。

    n  上述代码中的 p.setAge(30)语句中,setAge(int age)方法中的this代表的就是p对象。

     

    1.1.1    this的应用

    学习this的用法之后,现在做个小小的练习。

    需求:在Person类中定义功能,判断两个人是否是同龄人

    class Person {

        privateintage;

        private String name;

       

        publicint getAge() {

            returnage;

        }

     

        publicvoid setAge(intage) {

            this.age = age;

        }

     

        public String getName() {

            returnname;

        }

     

        publicvoid setName(String name) {

            this.name = name;

        }

     

        publicvoid speak() {

            System.out.println("name=" + this.name + ",age=" + this.age);

        }

     

        // 判断是否为同龄人

        publicboolean equalsAge(Person p) {

            // 使用当前调用该equalsAge方法对象的age和传递进来p的age进行比较

            // 由于无法确定具体是哪一个对象调用equalsAge方法,这里就可以使用this来代替

            /*

             * if(this.age == p.age) { return true; } return false;

             */

            returnthis.age == p.age;

        }

    }

  • 相关阅读:
    Codeforces Round #605 (Div. 3)E
    Codeforces Round #628 (Div. 2)
    Codeforces Round #627 (Div. 3)
    AC自动机,知识点+hdu模板题
    Tire树,hdu2846,hdu4825
    Educational Codeforces Round 83 (Rated for Div. 2)
    分层最短路
    初入mysql的学习
    赛后总结
    Codeforces Round #625 (Div. 2, based on Technocup 2020 Final Round) D
  • 原文地址:https://www.cnblogs.com/1997WY/p/10370843.html
Copyright © 2020-2023  润新知