目录
什么是面向对象
想要了解什么是面向对象,就先要了解什么是对象二字。
- 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
那么面向对象的主要思想是什么呢?
比如在现实生活中买煎饼果子,你不需要知道怎么和面,怎么控制火候,怎么摊煎饼,你只需要找到一个卖煎饼果子的摊位,你只管给阿姨付钱,你就可以得到煎饼果子。
在咱们程序中也一样,你不用关注这个过程,你只管找一个人帮你做事!这就是面向对象的思想。
什么是成员方法和成员变量
public class Dog {
String breed; //成员变量
int size; //成员变量
String colour; //成员变量
int age; //成员变量
public void eat() { //成员方法
System.out.println("吃饭饭")
}
public void run() { //成员方法
System.out.println("吃饭饭")
}
public static void main(String[] args) {
}
}
顾名思义:通过上边代码就可以得知,成员变量对应生活中的例子就是狗的状态,那么成员方法就对应狗的行为。
变量(状态)
成员变量:定义在类当中,方法以外
成员方法(行为)
成员方法:定义在类中 不写static关键字
什么是类
类:是一个模板,它描述一类对象的行为和状态。类也可以看成是创建 Java 对象的模板。
类可以理解为模型设计图:抽象出来的模型
而对象就是类的实体化 :也就是将模型实例化为手机实体
下图中汽车为类(class),而具体的每辆车为该汽车类的对象(object),对象包含了汽车的颜色、品牌、名称等。
比如以上两张图都是类,也就对应现实生活中的模板,蓝图。
怎么创建对象和使用对象
对象的创建:
格式: 类名 对象名 = new 类名();
Student stu = new Studen(); //*根据Studen类 创建了一个名为stu的对象
对象的使用:
分为两种情况:
使用成员变量:对象名.成员变量名
使用成员方法:对象名.成员方法名(参数) (也就是,想用谁,就用对象名点儿谁。)
注意事项:
如果成员变量没有进行赋值,那么将会有一个默认值,规则和数组一样。(String 为 nulll ......)
System.out.println(stu.age); //成员变量的使用
stu.name="CSDN"; //成员变量的赋值
成员变量和局部变量的区别
- A:在类中的位置不同
-
- 成员变量:在类中方法外
- 局部变量:在方法定义中或者方法声明上
- B:在内存中的位置不同
-
- 成员变量:在堆内存(成员变量属于对象,对象进堆内存)
- 局部变量:在栈内存(局部变量属于方法,方法进栈内存)
- C:生命周期不同
-
- 成员变量:随着对象的创建而存在,随着对象的消失而消失
- 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
- D:初始化值不同
-
- 成员变量:有默认初始化值
- 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
- 注意事项:
-
- 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
- 基本数据类型变量包括哪些:byte,short,int,long,float,double,boolean,char
- 引用数据类型变量包括哪些:数组,类,接口,枚举
this关键字的使用
区分成员变量与局部变量:
public static void main(String[] args) {
//注:可以使用this进行区分成员变量和局部变量
name = "CSDN"; // 这里指的是给局部变量赋值
this.name = "CSDN2"; // 这里是给成员变量赋值
}
对象内存解释:
1、new出来的在内存的堆当中 不使用 则是默认的初始值(int 初始值为0,String 初始值为null,boolean初始值是false,double的初始值是0.0 等)
2、因为类是引用数据类型 所以赋值过程可以理解为地址的传递
当然 多个对象指向同一个堆内存的地址 那么修改数据将 (牵一发而动全身)
3、当类被使用时,对应的.class文件才被加载进内存
4、创建对象的本质是在堆内存中开辟空间
5、方法是在栈中执行的
6、局部变量随着方法执行进栈而进栈
7、成员变量随着对象被创建而进堆内存中