封装
指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
封装的好处:
- 隐藏实现细节,提供公共的访问方式 (比如电脑的机箱,你只需要摁下开机键就可以开机,不用管里面是如何实现的)
- 提高了代码的复用性
- 提高安全性。
封装的原则:
- 将不需要对外提供的内容都隐藏起来。
- 把属性隐藏,提供公共方法对其访问。
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修饰
-
因为static修饰的成员,是随着类的加载而加载的,所以它的归属属于类,可以不用通过对象来调用
而是直接通过类名调用即可
注意:
static里面是没有this,因为this表示当前类对象,而static是优先于对象而存在的
static总结:
1.静态是随着类的加载而加载,优先于对象而存在
2.静态只能访问静态
什么时候封装?
就是有需要反复执行的代码的时候,或者业务逻辑的时候,就可以使用封装。
方法封装,类封装(搭配private关键字 setGet方法 构造方法 static关键字)