zoukankan      html  css  js  c++  java
  • 转载 实现类的封装性

    实现类的封装性

            为了实现良好的封装性,我们通常将类的成员变量声明为private,再通过public的方法来对这个变量进行访问。对一个变量的操作,一般都有读取和赋值操作,我们分别定义两个方法来实现这两种操作,一个是getXxx()(Xxx表示要访问的成员变量的名字),用来读取这个成员变量操作,另外一个是setXxx()用来对这个成员变量赋值。
    一个类通常就是一个小的模块,我们应该让模块仅仅公开必须要让外界知道的内容,而隐藏其它一切内容。我们在进行程序的详细设计时,应尽量避免一个模块直接修改或操作另一个模块的数据,模块设计追求强内聚(许多功能尽量在类的内部独立完成,不让外面干预),弱耦合(提供给外部尽量少的方法调用)。

    private变量只能被内部类使用,不能被外部的类使用,有一种例外,如下:

    • 在一个类中定义了一个private成员变量age,然后产生了这个类的两个实例d1、d2,则在d1对象的方法中可以访问d2对象中的私有变量age,代码如下:
      class Person
      {
              private int age=-1;
               void aa(Person a)
               {
                        System.out.println(a.age);
               }
      }
      class bbc
      {
               public static void main(String[] args) 
               {
                        Person d1=new Person();
                        Person d2=new Person();
                        d1.aa(d2);   //在这里d1对象的aa方法中访问了d2对象中的私有变量age
                }
      }
    • 只有在方法内才能出现访问另一个对象的私有变量的语句,如下代码是错误的:
      class Person
      {
              private int age=-1;
               void aa(int age)
               {
                        System.out.println(age);
               }
      }
      class bbc
      {
               public static void main(String[] args) 
               {
                        Person d1=new Person();
                        Person d2=new Person();
                        d1.aa(d2.age);   //不是在方法内不能出现访问私有成员变量的语句,所以这里会报错
                        System.out.println(d2.age);   //这句也是错的
               }
      }

    类的封装所带来的优点

      • 隐藏类的实现细节;
      • 让使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;
      • 便于修改,增强代码的可维护性;
      • 可进行数据检查
        例子:
        class Person
        {
                int  age ;
                void shout()
                {
                        System.out.println("您的年龄是:" + age)
                }
                pubic static void main(String args[ ])
                {
                        Person  p = new Person();
                        p.age = -30;    
                        p.shout();
                }
        }
        如果有人把年龄输入为负数,很明显是不对的,可以修改如下:
        class Person
        {
                private int  age ;
                public int setAge(int age)
                {
                        if(age<0)
                                return;
                        this.age = age ;
                }
                public int getAge()
                {
                        return age;
                }
                void shout()
                {
                        System.out.println("您的年龄是:" + age)
                }
                pubic static void main(String args[ ])
                {
                        Person  p = new Person();
                        p.setAge = -30;    
                        p.shout();
                }
        }
        经过这样的封装之后,负数的年龄将不会被赋值给age。还有两个数相除,除数不能为0也可用这方法
      • 转自:http://blog.csdn.net/dai_zhenliang/article/details/7496668
    何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
  • 相关阅读:
    mysql安装,oracle安装
    各位数之和
    java环境配置针对win10(电脑重装必备) 最后一步很重要
    关于Spring和SpringMVC的总结
    Intellij IDEA debug模式下项目启动慢/无法启动的事件解决过程记录
    bootstrapValidator验证的remote中data属性里获取select一直是默认值
    springmvc.xml 中报错:Start state is missing. Add at least one state to the flow
    Hibernage错误:Could not open Hibernate Session for transaction
    关于独立部署web项目到tomcat服务器详情
    idea 2018.1激活方法
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5867983.html
Copyright © 2011-2022 走看看