隐藏

JAVA(封装)
2022年 01月 12 日

Calvin

封装:

在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函数接口的实现细节部分包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。

封装的优点:
  1. 良好的封装能够减少耦合。
  2. 类内部的结构可以自由修改。
  3. 可以对成员变量进行更精确的控制。
  4. 隐藏信息实现细节。

如何实现封装?

用关键字private进行修饰。

public class Person {
    private String name;//这段代码中,将 name 和 age 属性设置为私有的,
    private int age;    //只能本类才能访问,其他类都访问不了
    }

如果外界需要访问私有化的成员变量,则只需要对外提供一个public修饰的getXX()
例:

   public String getName(){
        return this.name;  //对值属性提供对外的公共方法访问
     }                     //采用 this 关键字是为了解决实例变量和局部变量
                     //中的name变量)之间发生的同名的冲突。

如果外界需要修改私有化的成员变量,则只需要对外提供一个public修饰的setXX()
例如:

public void setName(String name){
        this.name=name;
     }

private修饰的成员变量和成员方法不能被外界直接访问。任何要访问类中私有成员变量的类都要通过这些getter和setter方法。


static关键字

static修饰成员变量:(静态成员变量)

  1. 此时成员变量不在是成员变量了而是类变量(静态变量)。
  2. 和成员变量的区别?:
    a.成员变量必须通过对象的引用来访问,而静态变量直接可以使用类名.变量名进行访问。
    b.成员变量的生命周期随着对象的创建而产生,随着对象的消失而消失。而静态变量是随着类的加载而产生,随着类的消失而消失。
    c.成员变量存储在堆内存中,而静态变量存储在方法区
    d.成员变量属于每个对象的特有数据而静态变量属于每个对象的共享数据

    ---

    static修饰成员方法(静态方法)

  3. 成员方法必须通过对象的引用来访问,而静态方法直接可以使用类名.方法名进行访问。
  4. 静态的注意事项
    A:静态方法只能访问静态成员(为什么?:因为静态的内容是随着类的加载而加载,它是先进内存的。)
    B:静态方法中不能使用this,super关键字
    C:主方法是静态的(main方法)
    D:静态方法可以被继承但是不可以被重写

静态成员方法只能访问静态成员

static 修饰代码块

语法:

static{
        代码块
}

解析: 随着类的加载而执行,执行优先级最高,且只执行一次。
作用:往往用来加载图片,视频等音频资料。

构造代码块

语法:

{
       代码块
}

解析:只有在创建对象的时候调用,但是在调用构造函数之前执行。

备注:静态代码块和构造代码块以及创建对象执行的优先级为:

  静态代码块>构造代码块>创建对象

JAVA(封装)

封装:

在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函数接口的实现细节部分包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。

封装的优点:
  1. 良好的封装能够减少耦合。
  2. 类内部的结构可以自由修改。
  3. 可以对成员变量进行更精确的控制。
  4. 隐藏信息实现细节。

如何实现封装?

用关键字private进行修饰。

public class Person {
    private String name;//这段代码中,将 name 和 age 属性设置为私有的,
    private int age;    //只能本类才能访问,其他类都访问不了
    }

如果外界需要访问私有化的成员变量,则只需要对外提供一个public修饰的getXX()
例:

   public String getName(){
        return this.name;  //对值属性提供对外的公共方法访问
     }                     //采用 this 关键字是为了解决实例变量和局部变量
                     //中的name变量)之间发生的同名的冲突。

如果外界需要修改私有化的成员变量,则只需要对外提供一个public修饰的setXX()
例如:

public void setName(String name){
        this.name=name;
     }

private修饰的成员变量和成员方法不能被外界直接访问。任何要访问类中私有成员变量的类都要通过这些getter和setter方法。


static关键字

static修饰成员变量:(静态成员变量)

  1. 此时成员变量不在是成员变量了而是类变量(静态变量)。
  2. 和成员变量的区别?:
    a.成员变量必须通过对象的引用来访问,而静态变量直接可以使用类名.变量名进行访问。
    b.成员变量的生命周期随着对象的创建而产生,随着对象的消失而消失。而静态变量是随着类的加载而产生,随着类的消失而消失。
    c.成员变量存储在堆内存中,而静态变量存储在方法区
    d.成员变量属于每个对象的特有数据而静态变量属于每个对象的共享数据

    ---

    static修饰成员方法(静态方法)

  3. 成员方法必须通过对象的引用来访问,而静态方法直接可以使用类名.方法名进行访问。
  4. 静态的注意事项
    A:静态方法只能访问静态成员(为什么?:因为静态的内容是随着类的加载而加载,它是先进内存的。)
    B:静态方法中不能使用this,super关键字
    C:主方法是静态的(main方法)
    D:静态方法可以被继承但是不可以被重写

静态成员方法只能访问静态成员

static 修饰代码块

语法:

static{
        代码块
}

解析: 随着类的加载而执行,执行优先级最高,且只执行一次。
作用:往往用来加载图片,视频等音频资料。

构造代码块

语法:

{
       代码块
}

解析:只有在创建对象的时候调用,但是在调用构造函数之前执行。

备注:静态代码块和构造代码块以及创建对象执行的优先级为:

  静态代码块>构造代码块>创建对象

上一篇
JAVA(继承)
下一篇
JAVA(单例模式)

评论区(暂无评论)

这里空空如也,快来评论吧~

我要评论