js闭包和java的封装
在编程中,闭包和封装是两个很重要的概念,对于JavaScript和Java开发者来说尤其如此。
首先,我们来了解一下闭包。简单来说,闭包是指函数在访问外部变量时,会创建一个“闭合的环境”,使得函数中的变量不受外部影响,并且函数在执行完之后,闭合的环境还会保存在内存中。
以下是一个JavaScript的闭包示例:
function outer() {var a = 1;function inner() {console.log(a);}return inner;}var func = outer();func(); // 输出 1
在以上代码中,函数outer返回了另一个函数inner。由于inner使用了外部变量a,因此他形成了一个闭包,在执行func()时,闭包保存的环境使得inner函数中的a变量还存在于内存中,输出了1。
封装则是指将变量和方法包裹在一个类中,将复杂的逻辑隐藏在类内部,只暴露给外部必要的接口。这样可以保证程序的健壮性,在修改代码时也仅需要更改类内部实现,而不需要改动外部调用。
以下是一个Java的封装示例:
public class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public int getAge() {return age;}}public class Test {public static void main(String[] args) {Person p = new Person("张三", 20);System.out.println(p.getName()); // 输出 "张三"System.out.println(p.getAge()); // 输出 20}}
在以上代码中,类Person中的变量name和age被private修饰,这意味着只能够在类内部访问,外部无法直接访问。同时,类Person还提供了公共方法getName和getAge,用于对外部提供获取name和age的接口。由此实现了封装的效果。