对象:
  * 
  * 就是,描述一个具体的实物
  * 
  * 类:
  * 
  * 描述这一类事物的属性和特征,进行抽象出的模板。
  * 
  * 对象就是 类的实现,保存了属性的值
  * 
  * 如果对象和对象之间有 相同的属性 相同的值 就使用静态变量
  * 
  * 如果对象和对象之间有 相同的属性 不同的值(也可以相同),就使用成员
实例化:
  * 
  *       1加载对应类文件
  * 
  *       2 new在堆内存创建空间
  * 
  *       3执行构造方法,对堆内存对象进行初始化
  * 
  *       4构造方法弹栈并把堆内存地址返回给变量student
构造方法:是每个类都有的,并且用于创建该类的对象
  * 
  * 如果 该类中没有编写构造方法,编译器自动生成一个无参数的
  * 
  * 如果 该类这中编写了构造方法,不管是不是无参,则默认的不在自动生成
  * 
  * 所以我们写构造方法的时候,可先写无参,再用重载写
  * 
  * 构造方法构成 : 修饰符 方法名/类名(参数列表){方法体}
  * 
  * 构造方法修饰符 只有权限控制
  * 
  * 没有返回值,没有void
  * 
  * 构造方法名 必须和类名相同
  *       静态调用,不管类名还是对象名调用,都会变成类名调用
  * 
  *       静态方法不能直接调用非静态变量,因为静态方法随类生成而运行。
  * 
  *       但是成员变量必须经过成员方法缓存后,才能被缓存,静态才能调用
  * 
  *       静态变量:对象之间共有的属性和值
  * 
  *       成员变量:对象之间共有的属性不同的值,但值也可以相等
  * 
  *       成员方法:方法中需要使用成员属性的时候定义为成员方法
  * 
  *       静态方法:方法中不需要使用成员属性的时候定义为静态方法
  * 
  *       构造方法、成员方法:最主要的区别是有无 void 。
  * 
  *       成员方法:普通方法
  * 
  *       构造方法:new 新对象,开新空间时调用的方法,默认参数null,可以设置新的构造方法和参数
成员方法,构造方法:
public class opear_01 {
	public static void main(String[] args) {
		opear_01 o1 = new opear_01();
		opear_01 o2 = new opear_01(15);
	}
	// 构造方法
	public opear_01() {
		System.out.println("无参构造");
	}
	public opear_01(int i) {
		System.out.println(i + "无参构造");
	}
	// 成员方法,成员方法可以和类名相同
	// 如何区分同名的成员方法和构造方法呢? 看返回值,构造方法没有返回值,void都没有
	public void opear_01(int i) {
		System.out.println(i + "有参构造");
	}
}静态方法,成员方法调用:
public class opear_02 {
	static int a = 10;
	int b = 20;
	public static void main(String[] args) {
		// 静态方法中,无法直接使用非静态属性
		// 需要使用对象调用才行
		// System.out.println(b);
		opear_02 o = new opear_02();
		o.b = 40;
		o.m1();
		// o.m2();
	}
	// 静态变量 : 对象之间共有的属性和值
	// 成员变量 : 对象之间共有的属性不同的值,但值也可以相等
	// 成员方法 : 方法中需要使用成员属性的时候,定义为成员方法
	// 静态方法 : 方法中不需要使用成员属性的时候,定义为静态方法
	public void m1(){
		System.out.println(b);
		System.out.println(a);
	}
	// public static void m2(){
	// OOP_04 o = new OOP_04();
	// System.out.println(o.b);
	// }
}










