对象:
*
* 就是,描述一个具体的实物
*
* 类:
*
* 描述这一类事物的属性和特征,进行抽象出的模板。
*
* 对象就是 类的实现,保存了属性的值
*
* 如果对象和对象之间有 相同的属性 相同的值 就使用静态变量
*
* 如果对象和对象之间有 相同的属性 不同的值(也可以相同),就使用成员
实例化:
*
* 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);
// }
}