美文网首页
Java 基础 15 面向对象概述

Java 基础 15 面向对象概述

作者: 小熊先生很不开心 | 来源:发表于2018-01-29 10:14 被阅读2次

    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 面向对象概述

          本文链接:https://www.haomeiwen.com/subject/patxzxtx.html