01面向对象封装
重点难点
1. 类和对象概念
类 - 对【对象】的抽象,是【对象】的模板
对象 - 对现实中的事务具体描述,实体
public class 类名 {
变量类型 变量名; // 成员变量
public 返回值类型 方法名(参数) {
变量类型 变量名; // 局部变量
}
}
语法
类名 对象名 = new 类名(); // 创建对象,并且起了一个名字,变量名
对象名.成员变量
对象名.方法名(参数)
2. 对象的内存使用分布情况
-
new 对象 使用的是堆内存
-
要执行的代码(方法)以及 *.class,使用的是方法区内存
-
方法执行时的局部变量,使用的是栈内存
3. 方法参数传递
基本类型参数
public class Test {
public static void main(String[] args) {
int a = 5;
test(a);
System.out.println(a); // 5 , 10
}
public static void test(int b) {
b = 10;
}
}
引用类型参数
public class TestStudent {
public static void main(String[] args) {
// 对象名,对象引用 真正对象
Student s = new Student();
s.name = "张三"; // 001
test(s);
System.out.println(s.name); // 张三 ? 李四
}
public static void test(Student s2) { // 001
s2 = new Student(); // 002
s2.name = "李四"; // 002 对象name
System.out.println("test2:" + s2.name);
}
}
public class TestStudent {
public static void main(String[] args) {
// 对象名,对象引用 真正对象
Student s = new Student();
s.name = "张三"; // 001
test(s);
System.out.println(s.name); // 张三 ? 李四
}
public static void test(Student s2) { // 001
s2.name = "李四"; // 001 对象name
System.out.println("test2:" + s2.name);
}
}
4. 了解内容
垃圾回收
局部变量和成员变量区别
5. 封装
private
public class 类 {
private 类型 变量名; // 让变量是私有的
public void set变量名(类型 形参) {
变量名 = 形参;
}
public 类型 get变量名() {
return 变量名;
}
}
this
this 的作用就是用来解决局部变量和成员变量的名称冲突
this 就代表当前对象, 哪个对象调用了 set get 方法,this 就是哪个对象
封装好处
总结:
-
安全性
-
复用性
-
隐藏代码的复杂性
// KISS
// keep it short and simple
// keep it simple and stupid
6. 构造方法
public class 类 {
// 无参构造,空参构造
public 类() {
}
// 有参构造
public 类(参数) {
// 使用参数给成员变量赋初值
}
// 就算自己不写构造方法,java 也会提供一个无参构造
}
// new Student("张三", 18)
// 1. 创建对象,分配内存空间,name(null),age(0) 都是默认值
// 2. 调用构造,接收构造方法的参数,赋值给成员变量 name(张三), age(18)
浙公网安备 33010602011771号