面向过程:当需要实现一个功能的时候,所有的过程步骤都需要仔细完成,要详细处理每一个细节。

面向对象:当需要实现一个功能的时候,不必关心具体的步骤,而是找一个具有该功能的对象(实例类)来帮忙做。

面向对象极大的方便了代码使用,使代码更加的灵活。

首先举一个很简单的例子感受一下面向对象的灵活和简便!

package shuyv.day01.demo06Gril;

import java.util.Arrays;

public class Demo01PrintArray {

    public static void main(String[] args) {
        int[] array = { 10, 20, 30, 40, 50 };

        // 要求打印格式为:{ 10, 20, 30, 40, 50 }
        // 使用面向过程,比较注意细节,为了满足所有需求,所有步骤都要仔细完成。
        System.out.print("[");
        for (int i = 0; i < array.length; i++) {
            if (i == array.length - 1) { // 如果是最后一个元素
                System.out.println(array[i] + "]");
            } else {    // 如果不是最后一个元素
                System.out.print(array[i] + ", ");
            }
        }

        System.out.println("============================");

        // 使用面向对象,结果一样却更加简单
        // 找一个JDK给我们提供好的Array类,其中有一个toString方法
        // 直接就可以把数组变成我们想要的格式的字符串
        System.out.println(Arrays.toString(array));
    }

}

有时候实现同样的功能,面向对象却可以如此的灵活!!!

下面介绍一下面向对象中的一些概念

1.类:

什么是类,一类事物,或者说是类别等等,概念有些抽象,但用代码来解释类,类就是相关属性和行为的集合,它是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。

2.属性:

属性便是一个事物所具有的性质,就是该事物的状态信息。

3.行为(方法):

行为便是说该事物能够做什么,有什么用。再类中其实就是方法

4.对象:

对象是一类事物的具体体现。对象是一个实例,而且具备该事物的属性和特征。

下面我们举例一个学生类
代码演示:

/*
学生类:

成员变量:(属性)   
    String name;
    int age;

成员方法:(行为)
    public void eat() {}
    public void sleep() {}
    public void study() {}

注意事项:
    1.成员变量直接定义在类当中,在方法外面。
    2.成员方法不要写static关键字。
 */

public class Demo03Student01 {

    // 成员变量
    String name;    // 姓名
    int age;    // 年龄

    // 成员方法
    public void eat() {
        System.out.println("吃饭");
    }

    public void sleep() {
        System.out.println("睡觉");
    }

    public void study() {
        System.out.println("打魔兽");
    }

}

通常情况下,一个类并不可以直接使用,需要根据类创建一个对象,才可以使用。

1.导包

需要使用类的时候直接导入,注意位置。

格式: import 包名称.类名称;

注意,对于当前类如果属于同一个包的情况下,可以省略导包语句不写。

2.类的创建

格式:类名称 对象名 = new 类名称();
例如:Student stu = new Student();

3.使用

使用成员变量:对象名.成员变量名
使用成员方法:对象名.成员方法名(参数

注释下图:下面代码所有的类都在同一个包里

java se面向对象 java面向对象简单例子_成员方法

代码举例:

public class Demo04Student02 {

    public static void main(String[] args) {
        // 1.导包,,,需要使用Demo03Student01类,
        // 该类和Demo03Student02类处于同一个包下面,所以神略导包语句

        // 2.创建,格式:
        // 类名称 对象名 = new 类名称();
        Demo03Student01 stu = new Demo03Student01();

        // 3.使用其中的成员变量,格式:
        // 对象名.成员变量
        System.out.println();   // null
        System.out.println(stu.age);    // 0

        System.out.println("=================================");
        // 改变对象当中的成员变量数值内容
         = "dkl";
        stu.age = 20;
        System.out.println();   // dkl
        System.out.println(stu.age);    // 20

        System.out.println("==================================");
        // 使用对象的成员方法,格式:
        // 对象名.成员方法名()
        stu.eat();
        stu.sleep();
        stu.study();

    }
}

注意事项:如果成员变量没有进行赋值,那么将会有一个默认值,规则和数组一样。


将类对象作为参数传递给方法

当一个对象作为参数,传递到方法中时,实际上传递进去的就是对象的地址值。

代码演示:

public class Demo08PhoneParam {

    public static void main(String[] args) {
        Demo05Phone01 oneplus = new Demo05Phone01();
        oneplus.brand = "oneplus8";
        oneplus.price = 6000.0;
        oneplus.color = "pink";

        method(oneplus);    // 传递进去的参数其实就是内存地址值(哈希值)
        // 当一个对象作为参数,传递到方法中时,实际上传递进去的就是对象的地址值。
    }

    public static void method(Demo05Phone01 param) {
        System.out.println(param.brand);    // oneplus8
        System.out.println(param.price);    // 6000.0
        System.out.println(param.color);    // pink

    }

}

将类对象作为返回值

当使用一个对象类型作为方法的返回值时,返回值其实就是对象的地址值。

代码演示:

public class Demo09PhoneReturn {

    public static void main(String[] args) {
        Demo05Phone01 OnePlus7pro = getPhone();
        // OnePlus7pro得到了方法调用的返回值对应的地址值
        // 当使用一个对象类型作为方法的返回值时,返回值其实就是对象的地址值。
        System.out.println(OnePlus7pro.brand);  // oneplus7pro
        System.out.println(OnePlus7pro.price);  // 5999.0
        System.out.println(OnePlus7pro.color);  // RosePink

    }

    public static Demo05Phone01 getPhone() {
        Demo05Phone01 oneplus7pro = new Demo05Phone01();
        oneplus7pro.brand = "oneplus7pro";
        oneplus7pro.price = 5999.0;
        oneplus7pro.color = "RosePink";
        return oneplus7pro; // 将oneplus7pro的地址值返回给调用行
    }

}