zoukankan      html  css  js  c++  java
  • Java面向对象㈠ -- 封装

    Java的面向对象有三大特征:封装、继承、多态。这里主要对封装进行讲解。

    封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数。

    Java的封装主要通过访问权限控制符:private,默认,protected,public来实现。(这四个权限访问控制符的区别网上有很多,建议读者自行搜索学习,切记要亲自练习一下!)
    最明显的实现就是把类的成员变量私有(private),只能通过类的成员函数来进行访问,并且此时的成员函数公有(public)。这就是著名的setter/getter方法。

    说到Java的封装,不得不提到构造函数,每次通过创建一个对象的时候,构造的函数都会被调用。构造函数可以重载,但是不能被覆盖。另外与构造函数类似的是构造代码块。

    Java的封装本身是很简单的,只是在这里另外介绍两个关键字:this,static。

    this代表当前对象的引用,当使用这个对象的成员变量和成员函数时,实际上会有一个隐式的this在前面(确切的说是this.)。只是有些时候,我们需要显式的写出,这种情况在Java面向对象㈠ -- 封装②进行讨论。

    static是静态的意思,static可以修饰成员变量和成员函数,也可以直接修饰一段代码块。用static修饰的成员可以通过类名直接调用,当然通过实例对象也可以调用。
    事实上被静态修饰的成员并不依赖于任何对象,它直属于当前类,并被类的所以实例对象共享。需要注意的是,静态成员可以被非静态调用,而不能直接调用非静态。静态中不允许出现this,super关键字。

    通过下面一个例子,对Java的封装进行进一步扩展。
    代码中主要涉及(静态,构造,局部)代码块,还有构造函数与this的用法。

    public class Demo {
     private String name = "hehe";
     static{
      System.out.println("jingtai ...");
     }
     {
      System.out.println("gouzhao ...");
     }
     public Demo(){
      System.out.println("gouzhao ... hanshu");
     }
     public void say(){
      System.out.println(name);
     }
     public void say(String name){
      System.out.println(name);
      System.out.println(this.name);
     }
     public static void main(String[] args) {
      {
       System.out.println("jubu ...");
      }
      new Demo().say();
      new Demo().say("hao");
     }
    }

    输出结果:
    jingtai ...
    jubu ...
    gouzhao ...
    gouzhao ... hanshu
    hehe
    gouzhao ...
    gouzhao ... hanshu
    hao
    hehe
    当类进行加载的时候,静态就被加入内存,分配空间,包括静态代码块会被执行,并只有一次。
    每次new创建对象的时候,构造代码块和构造函数会被执行。
    类的成员变量和成员函数会被分配空间,并对成员函数进行默认的初始化。
    在函数体内,单独的用{}括起的代码叫做局部代码块,只被执行一次。
    在函数say中,声明了局部变量name,只是声明位置是在参数列表中。这是成员变量name就不会被访问到,
    这里就可以用到this,即使用当前对象的name。实际上这就是成员变量和局部变量的范围问题。

  • 相关阅读:
    ALLTOALL在线格式转换
    navicat注册码(亲测可用)
    抓包工具Fiddler设置(IOS)
    第三方设备云接入小米IOT平台
    snowboy进行语音唤醒,编译snowboy文件
    微信公众号开发之调起拍照或从手机相册中选图接口
    开放API网关实践
    分布式服务限流实战,已经为你排好坑了
    注解@PostConstruct与@PreDestroy使用讲解
    [转]布隆过滤器过时了,未来属于布谷鸟过滤器?
  • 原文地址:https://www.cnblogs.com/shuaixianbohou/p/3887330.html
Copyright © 2011-2022 走看看