zoukankan      html  css  js  c++  java
  • (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;

        }

    }

  • 相关阅读:
    从零开始入门 K8s | 应用编排与管理
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    203. Remove Linked List Elements
    183. Customers Who Never Order
    182. Duplicate Emails
    181. Employees Earning More Than Their Managers
    1261. Find Elements in a Contaminated Binary Tree
    1260. Shift 2D Grid
  • 原文地址:https://www.cnblogs.com/1997WY/p/10370843.html
Copyright © 2011-2022 走看看