1. 封装
隐藏对象的属性和实现细节,仅对外提供公共的访问方式,可提高代码复用性
2. private关键字
2.1.特点
- 一个极限修饰符
- 可修饰成员变量和成员方法
- 被其修饰的成员只能在本类中被访问
2.2.封装及应用
- 把成员变量用private修饰
- 提供对应的 setXxx、getXxx 方法
- private 仅仅是封装的一种体现形式,不能说封装就是私有
3. this关键字
3.1.特点
代表当前对象的引用,用来区分成员变量和局部变量的重名
private String name;
private int age;
private String gender;
public void setName(String name){ //局部变量
this.name = name; // this.全局变量 = 局部变量
}
public String getName(){
return name;
}
4. 构造方法
4.1.概述和作用
- 给对象的数据(属性)进行初始化
4.2.格式特点
- 方法名与类名相同(大小写也要一致)
- 没有返回值类型(连 void 也没有)
- 没有具体的返回值 return(构造方法不能用对象调用)
public class Student { // 学生类对象
private String name;
private int age;
private String gender;
public Student(){
System.out.println("构造方法");
}
}
public class Main {
public static void main(String[] args) {
Student s = new Student(); //在一创建对象时,系统就帮我调用了构造方法
s.setName("张三");
System.out.println(s.getName());
}
}
4.3.构造方法的重载
- 重载 :
方法名相同,与返回值类型无关(构造方法无返回值),只看参数列表 - 注意事项:
a.如果我们没有给出构造方法,系统会自动提供一个无参构造方法
b.如果我们给出了构造方法,系统将不再提供默认的无参构造方法
public class Student {
private String name;
private int age;
public Student(){
System.out.println("无参构造方法");
}
public Student(String name,int age){
this.name = name;
this.age = age;
System.out.println("有参构造方法");
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public void show(){
System.out.println(name + " - " + age);
}
}
public class Main {
public static void main(String[] args) {
Student s1 = new Student();
s1.setName("张三");
s1.setAge(23);
s1.show(); //(1)
System.out.println("----------------------");
Student s2 = new Student("李四",24);
s2.show(); //(2)
}
}
(1)输出
无参构造方法
张三 - 23
(2)输出
有参构造方法
李四 - 24
5. static关键字
5.1.特点
- 随着类的加载而加载
- 优先于对象存在
- 被类的所有对象共享
举例:一个班的学生共用一个班级编号
即如果某个成员变量是被所有对象共享的,name它就应该被定义为静态的
饮水机(静态)
水杯(非静态) - 可以通过类名调用
5.2.注意事项
- 在静态方法中是没有 this 关键字的
静态是随着类的加载而加载,this是随着对象的创建而存在
静态比对象先存在 - 静态方法只能访问静态的成员变量和静态的成员方法(即静态只能访问静态,非静态都可以访问)
6. 静态变量与成员变量的区别
6.1.所属不同
- 静态变量属于类,也称为类变量
- 成员变量属于对象,也称为对象变量
6.2.内存中位置不同
- 静态变量存储于方法区的静态区
- 成员变量存储于堆内存
6.3.内存出现时间不同
- 静态变量随着类的加载而加载,随着类的消失而消失
- 成员变量随着对象的创建而存在,随着对象的消失而消失
6.4.调用不同
- 静态变量可通过类名调用,也可通过对象调用
- 成员变量只能通过对象名调用
7. 在工具类中使用静态
public class Tool { //声明一个工具类
private Tool(){} //如果一个类中所有方法都是静态的,需要构造私有方法,目的
//是不让其他类创建本类对象,直接用 “ 类名. ” 调用即可
public static void print(int[] arr){
for (int i = 0;i < arr.length; i ++){
System.out.println(arr[i]);
}
}
}
public class Main { //测试方法
public static void main(String[] args){
int[] arr = {11,33,55,44,88,33};
Tool.print(arr); //直接用 “ 类名. ” 调用即可
}
}
8. 代码块的概述和分类
7.1.概述
- 在Java中,使用{}括起来的代码称为代码块
7.2.分类
- 根据其位置和声明的不同,可分为局部代码块、构造代码块、静态代码块、同步代码块
7.3.常见代码块的应用
- 局部代码块
在方法中出现,限定变量生命周期,及早释放,提高内存利用率 - 构造代码块
在类中方法外出现,多个构造方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行 - 静态代码块
在类中方法外出现,加了static修饰
用于给类进行初始化,在加载时执行且执行一次
一般用于加载驱动
优先于主方法执行