Java基础:面向对象编程(基础)

一、使用对象的原因

        如果我们需要对猫进行一个描述(名字、年龄、走路、喵叫......)

        ①单独用变量来记录数据,把信息拆解了,不利于数据的管理;

        ②用数组来记录数据,会出现如下问题:

        1)数据类型体现不出来;

        2)只能用下标才能获取对应信息,导致变量名字、内容的对应关系不明确;

        3)不能体现我们对象的行为。

        一个程序就是一个世界,有很多事务(对象(属性、行为))

二、类与对象

 2.1 类与对象的关系

        1、类是抽象的,概念的,代表一类事物,比如人类、狗类...,即它是一种数据类型

        2、对象是具体的 ,实际的,代表一个具体的事务,比如一只具体的猫,即它是一个实例

        3、类是对象的模板,而对象是类的一个个体,对应一个实例。

2.2 对象在内存中的存在形式

        对象名(对象引用)只是用来指向对象的,真正的对象是对象空间(内存中存储的地址和数据)。

public class Object01 {
    public static void main(String[] args) {
        Cat cat01 = new Cat();
        cat01.age = 12;
        cat01.color = "白色";
        cat01.name = "小白";

    }
}
class Cat{
    String name;
    String color;
    int age;
}

 2.3 属性与成员变量

        2.3.1 两者关系

        1、属性与成员变量是同一个意思。(这也有种叫法:字段(field)

        2、属性是类的一个组成部分,一般是基本数据类型,也可以是引用数据类型(对象,数组)。

        2.3.2 属性的注意事项

        1、属性的定义语法类似变量: 访问修饰符  属性类型  属性名

        2、有四种访问修饰符:public,protected,默认,private;

        3、访问修饰符的作用:控制属性或方法的访问范围

        4、如果属性不赋值,会有默认值,规则和数组一样;

2.4 类与对象的内层分配机制

        Java内存结构分析

        1、栈:一般存放基本数据类型(局部变量);

        2、堆:存放对象(Cat cat,数组等);

        3、方法区:常量池(常量,例如字符串),加载类信息;

2.5 成员方法(简称方法)

        在某些情况下,我们需要定义成员方法。比如人类,除了基本的属性外(年龄,姓名...),我们人类有会有一些动作方法:说话、跑步...

        2.5.1 方法调用小结

        1、当程序执行到方法时,就会开辟一个独立的空间(栈空间);

        2、当方法执行完毕后,或者执行到return语句时,就会返回;

        3、返回到调用方法的地方(返回后,原本的开辟的栈就会销毁);

        4、返回后,继续执行剩下的程序。

        2.5.2 方法的作用(好处)

        考虑这么一个情况,如果你的程序中有多个for循环输出,那你是不是要一遍一遍重写,而且当需要对输出部分的代码进行修改时,是不是还得一个一个重新改,这样子太麻烦了。我们是不是可以写一个for循环输出的方法,任何需要输出时调用改方法即可,而且要对输出部分代码进行修改时,只需要修改方法,就可以达到各个输出的部分全部修改。

        1、提高代码复用率,降低代码冗余;

        2、将实现的细节封装起来,然后提供其他用户来调用即可;

        2.5.3 方法的定义

        访问修饰符  返回数据类型   方法名(形参列表...){ //方法体

                代码块;

                return  返回值; //可有可没有。

        }

        例子:

class Person{
    String name;
    int age;

    //方法(成员方法)
    //
    //1.public: 表示方法是公开的;
    //2.void: 表示方法没有返回值;
    //3.speak(): speak是方法名,()中是形参列表;
    public void speak(){
        System.out.println("我是个好人");
    }
}

        2.5.4 方法细节

①访问修饰符:

        1、有四种访问修饰符:public,protected,默认,private;

        2、访问修饰符的作用:控制属性或方法的访问范围

②返回数据类型:

        1、一个方法最多只有一个返回值;(需要返回多个结果可以返回数组)

        2、返回类型可以为任意类型,包含基本类型和引用类型(数组、对象)

        3、如果方法要求有返回数据类型,则方法体中最后执行的语句必须为 return 值;