以对象进行代码开发:opp 面向对象编程
模板/类别对应实例/对象/个体
一般编写的时候把生产环境和测试环境分开,就是在新建的项目里面新建一个src目录文件和一个test目录文件。
创建类别的方法
public class 类名{
//1.成员变量
语法:[访问权限修饰符][普通修饰符] 数据类型 变量名称 [= 数据];
//2.普通功能方法
四种方法都可以用
例如最简单的无参无返回值
public void study() {
System.out.println(可以是前面的成员变量+"正在学习。。。");
}
}
创建对象:
语法: 类名 对象名称 = new 类名();
public class Student {
public String id;
public String name;
public String grade;
public String[] hobby;
public void readbook() {
System.out.println(name + "正在读书...");
}
public void dowork() {
System.out.println(name + "正在写作业...");
}
}
public class Studenttest {
Student student1 = new Student();
Student student2 = new Student();
Student student3 = new Student();
Student student4 = new Student();
Student student5 = new Student();
student5.name = "mengbiao";
}
我们首先要分清栈和堆的区别
成员变量在堆内存中,因为对象的存在,才在内存中存在;局部变量存在栈内存中。
成员变量作用于整个类中。局部变量作用于方法中或者语句中。
首先在栈内存中有一个Student student5 ;然后在堆内存中new Student(),默认初始化name为null;再将name设置显示初始化值为”mengbiao”,将num设置显示初始化值为;将new Student()产生的地址值赋给栈内存,再由栈指向堆中的地址。
Student student3 = new Student();
Student stu = student3;
stu.name="who";
此时要是显示名字为who
这是因为会先初始化stu,再将student3的地址给它,这样对stu的操作仍然是指向刚开始在堆里创造的空间。
成员变量和局部变量的区别:
作用范围:成员变量作用于整个类中。局部变量作用于方法中或者语句中。
在内存中的位置:成员变量在堆内存中,因为对象的存在,才在内存中存在;局部变量存在栈内存中。
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。(在使用对象时,没有必要知道对象内容是如何完成对应功能的,我们只需要指挥对象去执行即可)。
封装的好处:将变化隔离(内部功能细节变化不影响使用);便于使用(不用了解内部的具体实现);提高重用性;提高安全性(只对外暴露一些简单的内容供使用)。
封装的原则:将不需要对外提供的内容都隐藏起来;把属性都隐藏起来,只提供公共方法对其访问。
函数本身就是java代码中的最简单的封装体。类也是封装体,类中方法不一定全部暴露出去,可通过权限修饰符进行隐藏。包也是封装体,如框架,拿来即用。
构造函数
构造函数特点:
- 函数名与类名相同
- 不用定义返回值类型
- 不可以写return语句
作用:给对象进行初始化。
构造函数对象一建立就会调用与之对应的构造函数,可用于给对象进行初始化。当一个类中没有定义构造函数时,系统会默认给该类加入一个空参数的构造函数,当自己定义了构造函数后,默认的空构造函数就不存在了。
注意:默认构造函数的特点;多个构造函数是以重载的形式存在的。
在构造代码块中,对象一建立就立即运行,而且优先于构造函数执行。构造代码块中定义的是不同对象具有共性的初始化内容。
构造代码块和构造函数的区别:构造代码块是给所有对象进行统一初始化;而构造函数是给对应的对象初始化。
5、this关键字
this的应用:当定义类中方法时,该方法内部要用到调用该方法的对象时,这时用this表示这个对象。但凡本类功能内部使用到了本类对象,都用this表示。