封装

106 阅读4分钟

封装

指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

封装的好处:

  • 隐藏实现细节,提供公共的访问方式 (比如电脑的机箱,你只需要摁下开机键就可以开机,不用管里面是如何实现的)
  • 提高了代码的复用性
  • 提高安全性。

封装的原则:

  • 将不需要对外提供的内容都隐藏起来。
  • 把属性隐藏,提供公共方法对其访问。

private(私有)关键字特点

a:是一个权限修饰符

b:可以修饰成员变量和成员方法

c:被其修饰的成员只能在本类中被访问

封装和private的应用:

把成员变量用private修饰(被private修饰的成员只能在本类中访问)

提供对应的getXxx()和setXxx()方法

附加:private关键字 修饰成员变量,一般会搭配public修饰的成员方法set get方法来使用(javaBean 里面有set get方法)

下面这个了解

private仅仅是封装的一种体现形式,不能说封装就是私有

私有并不意义为安全,私有只是封装的一种体现形式而已(后期我们会学一个技术栈:反射--暴力反射)

this关键字(很重要,javaScript里面也有this vue.js也有this)

概念:表示当前对象的引用

作用:就是用来区分成员变量和局部变量的区别

代码块:用{}括起来的就是代码块

分类:写的位置不同,可以分为

  • 局部代码块

和局部变量一样,写在方法中,限定变量的声明周期,及早释放,提高内存的使用效率

  • 构造代码块(了解)

在类中方法外,多个构造方法(等下就讲)中的相同代码,可以抽取到一起放到构造代码块中,会在构造方法执行前执行

  • 静态代码块(重要)

在类中方法外,会在代码块的前面加上static关键字,执行时机是在类加载的时候,就会执行,作用是加载一些静态资源(配置文件,图片,音视频)

  • 同步代码块(多线程里面,现在不讲)
public String getName() { return this.name; } 
// get方法 成员
public int getAge() { return this.age; 
} //构造代码块 每创建一次对象就会执行一次构造代码块 
{ 
 System.out.println("构造代码块..."); 
 } static {// 静态代码块 在类加载的时候执行,优先于构造代码块 
   System.out.println("静态代码块..."); 
   }

构造方法

概念-作用:

1.实例化对象用(创建对象的目的就是为了使用该对象里面的成员(变量,方法))

2.给成员变量进行初始化赋值 (通过setXXX方法也可以给成员变量赋值)

格式:

1.方法名必须和类名相同

2.没有返回值类型,注意:连void都不可以写

3.没有具体的返回值,注意:没有具体的返回值不代表没有return

注意:

1.构造方法在new对象的时候,会自动调用执行

2.如果我们不写构造方法,系统会默认给一个没有参数的构造方法

3.如果我们给出构造方法,系统就会把无参构造方法去掉,如果非要用无参构造,就需要自己手写一个

4.将来我们创建类的时候,一般都会有一个无参构造+有参构造

成员变量赋值的两种方式:

1.通过setXXX方法 用的最多 因为灵活

2.通过构造方法

public static void main(String[] args) { 
Baby baby = new Baby(); 
//1.通过setXXX方法(灵活) 
baby.setName("张三"); 
baby.setName("张四"); System.out.println(baby.getName()); // 张三 
//2.通过构造方法(写法简单) 
Baby baby1 = new Baby("李四"); // new Baby("李四"); 变成垃圾。。。。GC垃圾回收器 不定时去回收 baby1 = new Baby("李五"); System.out.println(baby1.getName()); // 李五 }

修饰符:public static

static关键字特点:

1.随着类的加载而加载的(就是随着字节码的加载而加载)

2.由static修饰的成员是优先于对象存在的

3.可以被所有类共享

举例:饮水机(static修饰的共享)

水杯(不能用static修饰)

共性的用静态,特性的用非静态

如果某个成员变量,想被所有对象共享,就可以用static修饰

  1. 因为static修饰的成员,是随着类的加载而加载的,所以它的归属属于类,可以不用通过对象来调用

    而是直接通过类名调用即可

注意:

static里面是没有this,因为this表示当前类对象,而static是优先于对象而存在的

static总结:

1.静态是随着类的加载而加载,优先于对象而存在

2.静态只能访问静态

什么时候封装?

就是有需要反复执行的代码的时候,或者业务逻辑的时候,就可以使用封装。

方法封装,类封装(搭配private关键字 setGet方法 构造方法 static关键字)