面向对象1

目录

1. 面向对象和面对过程

2. 类和对象

3. Java中定义类的格式

        3.1 定义类完成属性描述

        3.2 定义类完成行为描述

4. Java中创建对象和操作成员

        4.1 创建对象

        4.2 通过对象操作成员变量

        4.3 通过对象操作成员方法

5. 类对象内存分析图


1. 面向对象和面对过程

吃烤羊排

【面向对象】:1. 驱车去往烤羊排店铺
                         2. 点一份烤羊排
                         3. 吃
                         4. 埋单
                         5. 返程 

【面向过程】:1. 买羊排 
                         2. 准备调料 
                         3. 羊排整扇焯水,撇去浮沫
                         4. 料汁 
                         5. 烤箱 预热 190 度 3分钟
                         6. 羊排刷料放入烤箱 上下火 200度 15分钟
                                10分钟 在撒上孜然粉
                         7. 吃
                         8. 洗锅,洗烤箱,收拾

面向对象:找合适的人,做合适的事

面向过程:自己亲力亲为

2. 类和对象

对象
人类马云、马化腾、周杰伦...
狗类哮天犬...
车类劳斯莱斯幻影、领克01...

类:一类事物的统称,具备对应事物的行为描述和属性描述

对象:类对应的具体的,唯一的,独立的个体 

3. Java中定义类的格式

class 类名 {
    属性描述 【成员变量 Field】
    行为描述 【成员方法 Method】
}

类名:
            需要按照大驼峰命名法命名,同时要求见名知意
属性描述:
            描述当前类有哪些属性,例如: 
             人类 姓名,年龄,性别
             汽车类 发动机型号,变速箱型号,底盘配置...
行为描述:
           描述当前类有哪些行为,例如:
           人类 吃饭,睡觉,打豆豆
           汽车类 飙车,倒车

        3.1 定义类完成属性描述

/*
自定义类,Person 类。复合类型
定义了一个数据类型,Person 类型。
*/
class Person {
	// 属性描述【成员变量】
	/*
	姓名属性描述,name 成员变量对应的数据类型为 String 类型。
	描述 Person 类有 姓名属性,不带有任何的数据信息,因为数据信息
	需要 Person 类对象承载。
	*/
	String name;
	
	/*
	年龄属性描述,age 成员变量对应的数据类型为 int 类型
	*/
	int age;
	
	/*
	性别属性描述,gender 成员变量对应的数据类型为 char 类型
	*/
	char gender;
}

        3.2 定义类完成行为描述

// 行为描述【成员方法】
/*
吃饭行为描述,使用方法来完成,方法的参数是 String 字符串类型
*/
public void eat(String food) {
	System.out.println("我今天吃" + food);
}

/*
睡觉行为描述,无参数方法
*/
public void sleep() {
	System.out.println("我要和床一起到天荒地老");
}

/*
写代码行为描述,无参数方法
*/
public void coding() {
	System.out.println("键盘敲烂,月薪过万!");
}

4. Java中创建对象和操作成员

        4.1 创建对象

格式:    
            类名 类对象名 = new 类名();
            类名() ==> 构造方法 Constructor 

例如:Scanner sc = new Scanner(System.in);

解释:
    Scanner: 是一个类,首字母大写,Java中键盘录入数据扫描器类。

sc: Scanner 类变量,学名【Scanner 类对象】。

new:【有new 就有 堆】
        1. 在内存堆区根据当前数据类型所需,申请对应大小的内存空间
        2. 擦除申请空间中的所有数据。
Scanner(XXX):
        方法,构造方法 Constructor 方法名是类名。
  【作用】
            1. 提供数据类型,方法名是【类名】,告知 new 需要创建的是哪一个类的对象,需要多少空间
            2. 用于赋值当前内存空间中的数据内容。目前不涉及。

/*
类名 类对象名 = new 类名();
创建了一个 Person 类对象,对象名 p1
*/
Person p1 = new Person();

/*
Person@15db9742
	Person 当前数据对应的数据类型,为 Person 类型
	@ 在哪里
	15db9742 当前对象在内存堆区的地址。
*/
System.out.println(p1);

        4.2 通过对象操作成员变量

例如:

int[] arr = new int[10];
arr.length ===> arr数组【的】容量

Java中目前通过类对象操作使用成员变量的方式
    类对象.成员变量 
        赋值 or 取值。

// 通过类对象操作成员变量
// 给予成员变量赋值操作 . 的
p1.name = "张三";
p1.age = 16;
p1.gender = '男';

// 取值成员变量数据 . 的
System.out.println("Name:" + p1.name);
System.out.println("Age:" + p1.age);
System.out.println("Gender:" + p1.gender);

        4.3 通过对象操作成员方法

例如:

Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
float num = sc.nextFloat();

sc 是 Scanner 类对象,是一个对象名
    . 表示:的
    nextInt() nextFloat(); 方法。
格式:        类对象.方法名(实际参数);

// 通过类对象调用成员方法
// . 的
p1.eat("烤羊排");
p1.sleep();
p1.coding();

5. 类对象内存分析图