Java 基础 15 面向对象概述

1.1面 向对象思想

  • 我们回想一下,前面我们完成一个需求的步骤:首先是搞清楚我们要做什么,然后在分析怎么做,最后我们再代码体现。一步一步去实现,而具体的每一步都需要我们去实现和操作。这些步骤相互调用和协作,完成我们的需求。
    -在上面的每一个具体步骤中我们都是参与者,并且需要面对具体的每一个步骤和过程,这就是面向过程最直接的体现。
  • 那么什么是面向过程开发呢?
    面向过程开发,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。
  • 面向过程的代表语言:C语言
  • 当需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高。可随着需求的更改,功能的增多,发现需要面对每一个步骤很麻烦了,这时就开始思索,能不能把这些步骤和功能在进行封装,封装时根据不同的功能,进行不同的封装,功能类似的用一个类封装在一起,这样结构就清晰了很多。用的时候,找到对应的类就可以了。这就是面向对象的思想。

1.1.1 面向过程思想与面向对象思想

  • 什么是面向过程

  面向过程,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。

例如:吃煎饼果子利用面向过程的思想:

  1. 学习摊煎饼的技术
  2. 买材料鸡蛋,油,葱等等
  3. 开始摊
  4. 收拾
  • 什么是面向对象

  面向对象思想就是不断的创建对象,使用对象,指挥对象做事情。(如果有对象,直接用对象,对我们直接提供服务)
例如:吃煎饼果子利用面向对象的思想

  1. 找会摊煎饼的大妈(创建一个摊煎饼大妈的对象)
  2. 调用其摊煎饼的技能(功能),传递进去钱参数
  3. 返回给我们一个煎饼

1.1.2面向过程特点与面向对象特点

  • 面向过程:
    强调的是过程,所有事情都需要自己完成

  • 面向对象:

  是一种更符合我们思想习惯的思想(懒人思想,我把事情自己不做,交给别人去做);
可以将复杂的事情简单化(对使用者来说简单了,对象里面还是很复杂的)
将我们从执行者变成了指挥者角色发生了转换.

1.1.2.1案例代码

package com.itheima_01;
/*
 * 面向对象思想:
 *      面向对象是基于面向过程的一种编程思想。
 * 
 *      面向过程:强调的是每一个功能的步骤
 *      面向对象:强调的是对象,然后由对象去调用功能
 * 
 * 面向对象的思想特点:
 *      A:是一种符合我们思考习惯的思想
 *      B:可以将复杂的事情简单化
 *      C:让我们从执行者变成了指挥者
 * 
 * 举例:洗衣服
 *      面向过程:把衣服脱下来--找一个盆--放水--放洗衣粉--浸泡10分钟--揉一揉--清洗衣服--拧干--晾起来
 *      面向对象:把衣服脱下来--打开全自动洗衣机--放入衣服--按钮--晾起来
 */
public class Demo {

}

1.2类与对象概述

  • 我们学习编程是为了什么
    • 为了把我们日常生活中实物用学习语言描述出来
  • 我们如何描述现实世界事物
    • 属性 就是该事物的描述信息(事物身上的名词)
    • 行为 就是该事物能够做什么(事物身上的动词)
  • Java中最基本的单位是类,Java中用class描述事物也是如此
    • 成员变量 就是事物的属性
    • 成员方法 就是事物的行为
  • 定义类其实就是定义类的成员(成员变量和成员方法)
    -成员变量

  和以前定义变量是一样的,只不过位置发生了改变。在类中,方法外。
-成员方法

  和以前定义方法是一样的,只不过把static去掉,后面在详细讲解static的作用。

  • 类和对象的概念
    • 类:是一组相关的属性和行为的集合(我们班所有的同学都具备相同的属性和行为,比如:姓名,年龄,学习,这样就把所有的学生成为学生类)

    • 对象:是该类事物的具体体现(说某个同学时,他都具备自己特有的属性和行为)

    • 举例:

  类  学生

  对象  具体的某个学生就是一个对象。
比如:车是一个类,具体的开的奔驰、宝马,就是对象。

1.2.1案例代码

package com.itheima_01;
/*
 * 我们学习编程语言,其实就是为了把现实世界的事物模拟出来,实现信息化。
 * 
 * 我们是如何表示现实世界的事物的呢?
 *      A:属性    就是事物的描述信息
 *      B:行为    就是事物能够做什么
 *      举例:
 *          学生
 * 
 * Java语言最基本的组成单位是类,所以,在后面的学习过程中,我们是通过类来体现事物的。
 * 
 * 类:是一组相关的属性和行为的集合
 * 对象:就是该类事物的具体体现
 *      举例:
 *          类       学生
 *          对象      张三
 */
public class Demo2 {

}

1.3 类与对象案例:

package com.itheima_02;
/*
 * 类的定义:类是用来描述现实世界事物的
 * 事物:
 *      属性
 *      行为
 * 类如何和事物进行对应的呢?
 *      类:
 *          成员变量
 *          成员方法
 * 
 * 成员变量:和我们学习过的变量的定义是一样的,有两个小区别。
 *      位置不同:类中,方法外
 *      初始化值:成员变量不需要给初始化值也可以使用,因为它有默认值
 * 成员方法:和我们学习过的方法的定义是一样的,有一个小区别。
 *      去掉了修饰符中的static关键字
 * 
 * 需求:定义一个学生类。
 * 
 * 学生事物:
 *      属性:姓名,年龄...
 *      行为:学习,吃饭...
 * 
 * 学生类:
 *      成员变量:姓名,年龄...
 *      成员方法:学习,吃饭...
 */
public class Student {
    //成员变量
    //姓名
    String name;
    //年龄
    int age;
    
    //成员方法
    //学习的方法
    public void study() {
        System.out.println("好好学习,天天向上");
    }
    
    //吃饭的方法
    public void eat() {
        System.out.println("学习饿了要吃饭");
    }
}

1.3.2 学生类的使用

1.3.2.1 案例代码

package com.itheima_02;
/*
 * 类的使用:
 *      使用一个类,其实就是使用该类的成员。(成员变量和成员方法)
 * 而我们要想使用一个类的成员,就必须先拥有该类的对象。
 * 那么我们如何拥有一个类的对象呢?
 *      创建对象就可以了
 * 我们如何创建对象呢?
 *      格式:
 *          类名  对象名  = new 类名();
 * 对象如何访问成员呢?
 *      成员变量:
 *          对象名.成员变量
 *      成员方法:
 *          对象名.成员方法(...)
 */
public class StudentTest {
    public static void main(String[] args) {
        //类名  对象名  = new 类名();
        Student s = new Student();
        //System.out.println("s:"+s);//com.itheima_02.Student@da6bf4
        
        //使用成员变量
        System.out.println("姓名:"+s.name);//null
        System.out.println("年龄:"+s.age);//0
        System.out.println("----------");
        
        //给成员变量赋值
        s.name = "林青霞";
        s.age = 30;
        //再次使用成员变量
        System.out.println("姓名:"+s.name);//林青霞
        System.out.println("年龄:"+s.age);//30
        System.out.println("----------");
        
        //调用成员方法
        s.study();
        s.eat();
    }
}

1.3.3手机类案例

1.3.3.1案例代码

package com.itheima_02;
/*
 * 手机类:
 *      成员变量:品牌,价格,颜色...
 *      成员方法:打电话,发短信...
 */
public class Phone {
    //品牌
    String brand;
    //价格
    int price;
    //颜色
    String color;
    
    //打电话
    public void call(String name) {
        System.out.println("给"+name+"打电话");
    }
    
    //发短信
    public void sendMessage(String name) {
        System.out.println("给"+name+"发短信");
    }
}

手机案例使用:


package com.itheima_02;
/*
 * 手机类的测试类
 */
public class PhoneTest {
    public static void main(String[] args) {
        //创建对象
        Phone p = new Phone();
        
        //输出成员变量的值
        System.out.println("品牌:"+p.brand);//null
        System.out.println("价格:"+p.price);//0
        System.out.println("颜色:"+p.color);//null
        System.out.println("------------");
        
        //给成员变量赋值
        p.brand = "锤子";
        p.price = 2999;
        p.color = "棕色";
        
        //再次输出成员变量的值
        System.out.println("品牌:"+p.brand);//锤子
        System.out.println("价格:"+p.price);//2999
        System.out.println("颜色:"+p.color);//棕色
        System.out.println("------------");
        
        //调用成员方法
        p.call("林青霞");
        p.sendMessage("林青霞");
    }
}

你可能感兴趣的:(Java 基础 15 面向对象概述)