• 封装的使用细节


    类的属性的处理:

          1. 一般使用private访问权限。

          2.  提供相应的get/set方法来访问相关属性,这些方法通常是public修饰的,以提供对属性的赋值与读取操作(注意:boolean变量的get方法是is开头!)。

          3. 一些只用于本类的辅助性方法可以用private修饰,希望其他类调用的方法用public修饰。

    【示例】JavaBean的封装实例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    public class Person {
        // 属性一般使用private修饰
        private String name;
        private int age;
        private boolean flag;
        // 为属性提供public修饰的set/get方法
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public boolean isFlag() {// 注意:boolean类型的属性get方法是is开头的
            return flag;
        }
        public void setFlag(boolean flag) {
            this.flag = flag;
        }
    }

          下面我们使用封装来解决一下之前提到的年龄非法赋值的问题。

    【示例】封装的使用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    class Person {
        private String name;
        private int age;
        public Person() {
     
        }
        public Person(String name, int age) {
            this.name = name;
            // this.age = age;//构造方法中不能直接赋值,应该调用setAge方法
            setAge(age);
        }
         
        public void setName(String name) {
            this.name = name;
        }
        public String getName() {
            return name;
        }
        public void setAge(int age) {
            //在赋值之前先判断年龄是否合法
            if (age > 130 || age < 0) {
                this.age = 18;//不合法赋默认值18
            else {
                this.age = age;//合法才能赋值给属性age
            }
        }
        public int getAge() {
            return age;
        }
        @Override
        public String toString() {
            return "Person [name=" + name + ", age=" + age + "]";
        }
    }
     
    public class Test2 {
        public static void main(String[] args) {
            Person p1 = new Person();
            //p1.name = "小红"; //编译错误
            //p1.age = -45;  //编译错误
            p1.setName("小红");
            p1.setAge(-45);
            System.out.println(p1);
             
            Person p2 = new Person("小白"300);
            System.out.println(p2);
        }
    }

    图5-16 示例5-11运行效果图.png

  • 相关阅读:
    Android popupwindow 失去焦点或者点击空白区域时消失的解决方法
    九度 题目1394:五连击数组
    地市级地铁数据管理信息系统解决方式
    用位运算实现两个整数的加法运算
    Leaflet--建设移动设备友好的互动地图
    atitit.自适应设计悬浮图片的大小and 位置
    PIM-DM协议内核触发机制及协议执行机制记录
    整合struts2+spring+hibernate
    UITableViewCell的prepareForReuse方法
    《linux 内核全然剖析》编译linux 0.12 内核 Ubuntu 64bits 环境
  • 原文地址:https://www.cnblogs.com/huaxiansheng/p/15312395.html
Copyright © 2020-2023  润新知