面向对象2

200 阅读3分钟

封装:

1.封装:把实现的细节给隐藏起来,封装之后要对外公开一个公共的访问方式(java中方法)

2.封装的好处

  • 隐藏事物的实现细节

  • 提供代码的安全性

  • 提供代码复用性

3.封装的原则

  • 隐藏类的属性

  • 隐藏实现细节

  • 最后一定要提供一个公开访问方式

封装的实现使用private关键字

访问权限修饰符修饰成员变量,直接写在变量的数据类型前面:

修饰函数,写在函数声明的最前方;

private String name;
private int  age;

被私有的成员,只能在定义这个成员的类中使用;

所以被私有的成员需要在外界访问,还需要提供一个公共的方法;

一般对成员变量的操作主要有两个,赋值和取值,所以一般对私有的成员变量需要提供两个公共的方法,而且这两个方法在开发中有命名规范:

设置:set + 变量名 (变量名的首字母大写);

取值:get + 变量名 (变量名的首字母大写);

public class test {
     public static void main(String[] args) {
        Car c = new Car();
        c.setColor("灰色");
        System.out.println(c.getColor());
    }
}
class Car {
    private String color;
    private String brand;
    // 以后setter方法的形式参数名,要和成员变量名一样
    // 这个一个定义setter方法的规范.
    public void setColor(String color){
        this.color=color;
    }
    public String getColor(){
        return color;
    }
    public void setBrand(String brand){
        this.brand = brand;
    }
    public String getBrand(){
        return brand;
    }
}

构造函数

概念:构造函数,又叫构造器,是JVM在创建对象的时候,自动调用的函数;

作用:就是在创建对象的时候,给对象的成员变量附初始值;

写法

  • 函数名:必须和类名一致(包括大小写)
  • 返回值类型:没有返回值类型(连void都不能写)
  • return语句:也有return语句,不过一般不写;
  • 参数列表:构造函数可以重载,参数列表可以有不同情况,就提该怎么写,根据需求而定;
  • 修饰符:可以被访问权限修饰符修饰;不能被static修饰;
public Student(String n,int a){
       name = n ;
       age  = a ;
   }

用法:直接写在new关键字后面,也是通过函数名和参数来调用的;

创建对象的大概过程

1.先在堆内存中开辟空间,得到一个内存地址;
2.将类的所有成员变量加载到这个内存空间中
3.给加载到内存中的成员变量赋默认值;
4.根据new关键字后面调用情况,找到相应的构造函数,然后构造函数进栈执行;
    - 构造函数执行,先要执行一个隐式三步
    - 执行完隐式三步,执行书写在构造函数中的代码;
5.构造函数执行完毕,出栈,对象就创建完成。    

构造函数的内存图解(非常重要)

  这里注意,一个是默认初始化,一个是构造函数初始化。

构造函数的使用细节:

  • 私有的构造函数,不能被外界使用
  • 构造函数可以调用一般函数
  • 一般函数不能调用构造函数
  • 构造函数之间可以相互调用,使用this关键字实现的
  • 使用this关键字调用其他构造函数,this语句必须写在构造函数的第一行
  • 构造函数相互调用,不能交叉调用

开源地址

开源项目地址:github.com/371854496/f…

java学习资料:github.com/371854496/l…

各位觉得还阔以的话,点下Star,分享不易,thank you!

公众号 全战开花

获取更多技术干货