Day07
OO:面向对象
OOA:面向对象分析
OOD:面向对象设计
OOP:面向对象编程
面向过程和面向对象
- 面向过程
- 以方法为单位来解决问题的编程方式
- 适合简单的业务
- 面向对象
- 以对象为单位来解决问题的编程方式
- 万物皆对象
- 适合与复杂业务
类和对象
-
类、变量、方法组成一种新的数据类型——引用类型
-
类中包含
- 对象的属性、特征、数据,设计为成员变量
- 对象的行为、动作、功能,设计为方法
class 类名 { //自己创造的数据结构 成员变量类型 变量名; //对象行为(方法) 修饰词 返回值类型 方法名 ([参数列表]) { 方法体; } }
-
向对象赋值的过程称为创建对象(实例化对象)
类名 对象名 = new 类名();
-
访问对象的成员变量、调用成员方法
通过 对象.成员属性、对象.成员方法
Student student = new Student(); student.name = "李四"; student.age = 20; student.studentId = "1922"; student.className = "计算机1922"; student.study(); student.sayHi(); student.printId();
-
this与构造方法
-
this的作用
只能用在方法中,方法中访问成员变量之前默认都有this
void study(){ System.out.println(this.name + "在学习"); System.out.println("this = " + this); }
-
this指代当前对象,哪个对象调用方法,this指代的就是哪个对象
Student student1 = new Student("张三", 18, "1922", "计算机1922"); student1.study();//此处study中的this指代的是student1 System.out.println("student1 = " + student1);
输出
学生张三正在学习…… this = OOP.Day07$Student@14ae5a5 student1 = OOP.Day07$Student@14ae5a5
-
构造方法
与类同名,没有返回值类型,可有参可无参
无参默认生成,有参得自己写,有了有参之后无参失效
[!IMPORTANT]
不能写void
调用:在创建对象(new)时被自动调用
-
this的用法
-
this.成员变量名
访问成员变量
-
this.方法名
调用方法(很少用)
-
this()
调用构造方法
this("zhangsan", 1, "1922", "计算机1922");//调用有参构造方法
-
-
-
成员变量和局部变量
- 方法外类中为成员变量,方法内为局部变量
- 成员变量作用域为整个类,局部变量是作用域为当前方法中
- 两种变量在内存中存储的位置不同,所以可以重名
- 默认方法内变量调用采用就近原则,所以会就近使用形参中的局部变量,若要在方法中调用成员变量,则需要在成员变量前加this.,且不可省略
//方法外,成员变量 String name; int age; String className; String studentId; // 方法域中,局部变量 public Student(String name, int age, String className, String studentId) { this.name = name; //成员变量与局部变量重名,则this不可省 this.age = age; this.className = className; this.studentId = studentId; }
内存管理
Java的内存管理是由JVM来管理的
JVM将内存分为三大块——堆、栈、方法区
- 堆:new出来的对象(包括实例变量、数组元素、方法在方法区的地址)
- 栈:局部变量(包括方法的参数)
- 方法区:.class字节码文件(包括所有方法、静态变量)