Java基础杂烩_封装(Encapsulation)

〇. 疑问_为什么要封装?

  Java是一个十分标准的模块化程序设计语言,使用他进行设计的时候,我们必须限定一个类的具体作用,即:这个类在黑箱测试的时候,必须隐藏他内部的运行原理,只展现他对外发挥的功能。

  所以封装是一个十分重要的特性,对于Java,他提供了保护开发者程序的修饰符,没有人希望令自己骄傲的心血和智慧结晶被人偷走(...至少我不希望)。

一、修饰符、访问器、修改器

1、修饰符

作用:用于控制实体变量的受访权限,先只记录public与private

1)private:加入了private词条的变量不能被属于该类之外的方法访问与修改(Cannot be accessed from methods outside the class)。

      Tips:private词条保证了类的模块化(Modular),防止该类的功能不必要地暴露在该类之外。

2)public:使对应的实体变量可以被任何方法(包括包package外的方法)访问并修改(inside and outside the class)。

      Tips: public的使用可以为程序提供应用程序编程接口Application Programming Interface)。  

 1 public class Event {
 2     public static void main(String[] args) {
 3         BadGuy badGuy=new BadGuy();
 4         Person joey=new Person();
 5         //由于Person的money为private,以下两条指令将无法通过编译
 6         badGuy.money=joey.money;
 7         joey.money="Stolen";
 8         //属于public的变量会被外界的函数随意修改
 9         badGuy.money="Lost";
10     }
11 }
12 class Person{
13     private String  money;
14     public Person() {
15         money="much";
16     }
17 }
18 class BadGuy{
19     public String  money;
20     public BadGuy() {
21             money="None";
22                 }
23 }

2、Accessor, Mutator

  0) 为啥要访问器和修改器?

  首先,控制实例变量是较为困难的,由于Java没有只读变量的概念,一旦开发者访问到了一个变量,那么就说明他拥有了该变量的读写权限,其次,作为开发者,我们基本不会希望其他人拥有随意操作我们所创造的变量的权力。

  因此,编写Java程序良好的习惯之一就是将所有的实例变量设为private,根据需要给予他们对应的访问器修改器

  访问器(get方法)和修改器(set方法)都是人为规定的,只是我们希望他长这样,他就长这样了。

  1) Accessor

创建访问器的规则:

  • 以与之相关的变量为名(getxxx)
  • 修饰为public
  • 不接收参数
  • 返回对应变量的值

  2)Mutator

创建修改器的规则:

  • 以与之相关的变量为名(setxxx)
  • 修饰为public
  • 接收一个与对应变量同类的参数
  • 把接收的参数赋给对应的变量
  • 不返回任何值 (void)
 1 public class Person
 2 {
 3     private String money;
 4     //Accessor获取变量的值
 5     public String getMoney()
 6     {
 7         return money;
 8     }
 9     //Mutator修改变量的值
10     public void setMoney(String money)
11     {
12         this.money=money;
13     }
14 }

二、构造方法(Constructor)

  构造方法是一个非常重要的概念,他是创建每个对象时用于初始化对象的、自动调用的重要方法。

特点:

  • 所有类都有构造方法
  • 如果你不显式的写出构造方法,java会自动分配给这个类一个空的构造方法
  • 你可以让构造方法接收任意参数,并在一个该类的对象被创建时使用这些参数进行初始化
  • 在设置了需要接收参数的构造方法后,创建这个对象时必须在new Classname()的括号内输入构造器需要的参数,否则该对象不能被创建
  • 一个类可以拥有多个构造器,但是每个构造器必须有他独特的参数列表
  • 通过输入不同参数组合来调用不同的构造器
class Person{
         private String money;
         //构造器的创建(注意,构造方法没有类型,不返回任何值)
         public Person() {
         money="much";
     }
 }
 class BadGuy{
         private String money;
         public BadGuy(String state) {
             money=state;
     }
         //如果下面这个构造方法接收一个String类,创建对象时编译器将不能分清你想要调用哪个构造器
         public BadGuy() {
             money="None";
     }
 }

三、注释文档

  注释文档用来向外界说明你所写代码的用途和各个部分的大体功能,目前只引出注释文档的创建和一些基本句法

1、基本注释方法:

  • 注释必须紧挨在你要解释的代码块之前,否则不会生成正确的注释文档。
  • JavaDoc一般只能用来说明修饰为public型的方法、构造器和类(我们也没有为private成员做出说明的必要)
  • 必须以/**为开头,**/为结尾,中间每行开头可加*来提高可读性

2、对创建的类进行注释:

  使用@author来标注作者

/**
 * 
 * @author Joey Chen
 * This class represents the condition of a person's money
 */
public class Person{
    public String  money;
    public Person() {
        money="much";
    }
}

3、对创建的方法进行注释:

  使用@param xxx对输入方法的参数进行注释

  使用@return对方法的返回值进行注释

    /**
     * 
     * @return  This method return a new condition
     * @param state This string represents a new condition of the person's money
     */
    public String stealMoney(String state) {
        money=state;
        return money;
    }

4、生成注释文档

  • 使用eclipse的Project下“Generate Javadoc”可以生成注释文档
  • 另外使用cmd来到源文件所在文件夹后输入:javadoc -d xxx(生成到的子文件夹) xxx.java 也可以生成注释文档
  • 生成后进入对应文件夹,打开“index.html”即可查看注释,这是编译器通过处理代码中的注释而生成的一个网页,其他用户都可以访问这个网页来阅读你的注释文档。

 

posted @ 2021-03-27 20:36  JOE_Chin  阅读(188)  评论(0编辑  收藏  举报