首页 Java学习📘

Java基础篇——(12)面向对象思想

一、面向对象思想概述

面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节。

面向对象:当需要实现一个功能的时候,不关系具体的步骤,而是找到一个已将具有该功能的人,来帮我做事。

概述

问题:打印数组

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] + ", ");
    }
}

使用面向对象

//使用面向对象
//找一个JDK给我提供好的Arrays类,
//其中有一个toString方法,直接能把数组变成想要的格式的字符串
System.out.println(Arrays.toString(array));

举例

洗衣服:

  • 面向过程:把衣服脱下来-->找一个盆-->放点洗衣粉-->加点水-->浸泡10分钟-->揉—揉-->清洗衣服-->拧干-->晾起来
  • 面向对象:把衣服脱下来-->打开全自动洗衣机-->扔衣服-->按钮-->晾起来

区别:

  • 面向过程:强调具体的步骤
  • 面向对象:强调对象,这里的对象就是全自动洗衣机

特点

面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。

面向对象的语言中,主要包含三大基本特征:封装继承多态

二、类与对象

什么是类?

:是一组相关属性行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述改类事物。

现实中,描述一类事物:

  • 属性:就是该事物的状态信息。
  • 行为:就是该事物能够做什么。

举例:小猫

  • 属性:名字、体重、年龄、毛色。
  • 行为:走、跑、跳。

什么是对象?

对象:是一类事物的具体体现。对象是类的一个实例,具备该类事物的属性和行为。

现实中,一类事物的一个实例:一只小猫。

举例:一只小猫

  • 属性:名字-Tom、体重-5kg、年龄-2 years、毛色-yellow
  • 行为:溜墙根走、蹦跶的跳、喵喵叫。

类与对象的关系

类是对一类事物的描述,是抽象的

对象是一类事物的实例,是具体的

类是对象的模板,对象是类的实体

三、类的定义

事物与类的对比

现实世界的一类事物:

  • 属性:事物的状态信息。
  • 行为:事物能够做什么。

Java中用class描述事物也是如此:

  • 成员变量:对应事物的属性
  • 成员方法:对应事物的行为

类的定义格式

public class ClassName {
    //成员变量
    //成员方法
}
  • 定义类:就是定义类的成员,包括成员变量和成员方法。
  • 成员变量:和定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外。
  • 成员方法:和定义方法几乎是一样的。只不过把static去掉。

举例

/*
定义一个类,用来模拟学生事务。其中就有两个组成部分:
 - 属性(是什么):
    姓名
    年龄
 - 行为(有什么):
    吃饭
    睡觉
    学习

对应到Java的类当中:

成员变量(属性):
    String name;//姓名
    int age;//年龄
成员方法(行为):
    public void eat() {} //吃饭
    public void sleep() {} //睡觉
    public void study() {} //学习

注意事项:
1. 成员变量是自己定义在类当中的,在方法外边。
2. 成员方法不要写static关键字。
 */
public class Student {

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

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

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

    public void study() {
        System.out.println("学习!");
    }

}

四、对象的使用

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

也可以这样理解,一个手机的制作图纸(类)不能直接去使用,需要根据图纸制造出手机(对象)才能使用。

如何创造一个对象?

  1. 导包:也就是指出需要使用的类在什么位置。

格式:import 名称 类名称;

例如:import com.vayliu.demo01.Student;

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

  1. 创建

格式:类名称 对象名 = new 类名称();

例如:Student student = new Student();

  1. 使用(分为两种情况)

    • 使用成员变量:对象名.成员变量名
    • 使用成员方法:对象名.成员方法名

也就是,想用谁就用对象名点谁

举例

public class Demo02Student {

    public static void main(String[] args) {

        //1.导包
        //我需要一个Student类,和我的Demo02Student位于同一个包下,所以省略不写

        //2.创建
        //类名称 对象名 = new 类名称();
        //根据类名称创建一个名为student的对象
        Student student = new Student();

        //3.使用其中的成员变量
        //对象名.成员变量名
        System.out.println(student.name); //null
        System.out.println(student.age); //0
        System.out.println("====================");

        //改变对象当中的成员变量数值内容
        //右侧的字符串,赋值交给student对象当中的name成员变量
        student.name = "赵丽颖";
        student.age = 18;
        System.out.println(student.name); //赵丽颖
        System.out.println(student.age); //18
        System.out.println("====================");

        //4.使用对象的成员方法
        //对象名.成员方法名
        student.eat();
        student.sleep();
        student.study();

    }

}

五、类与对象的练习

定义手机类:

/*
定义一个类,用来模拟“手机”事物。
属性:品牌、价格、颜色
行为:打电话、发短信

对应到类中:
成员变量(属性):
    String brand; //品牌
    double price; //价格
    String color; //颜色
成员方法(行为):
    public void call(String who) {} //打电话
    public void sendMessage() {} //群发短信
 */
public class Phone {

    //成员变量
    String brand; //品牌
    double price; //价格
    String color; //颜色

    //成员方法
    public void call(String who) {
        System.out.println("给" + who + "打电话!");
    }

    public void sendMessage() {
        System.out.println("群发短信~~~");
    }
}

定义测试类:

public class Demo01PhoneOne {

    public static void main(String[] args) {

        //根据Phone类,创建一个名为one的对象
        //类名称 对象名 = new 类名称();
        Phone one = new Phone();
        System.out.println(one.brand); //null
        System.out.println(one.price); //0.0
        System.out.println(one.color); //null
        System.out.println("==================");

        one.brand = "苹果";
        one.price = 8388.0;
        one.color = "中国红";
        System.out.println(one.brand); //苹果
        System.out.println(one.price); //8388.0
        System.out.println(one.color); //中国红
        System.out.println("==================");

        one.call("乔布斯");
        one.sendMessage();

    }

}



文章评论

目录