美文网首页
面向对象一——概述

面向对象一——概述

作者: 嗷老板 | 来源:发表于2018-02-05 21:43 被阅读0次

一、面向过程思想概述

  我们在完成一个需求是,首先要清楚我们需要做什么,然后分析需要怎么做,最后再用代码去实现那些功能。在这过程中,每一步都需要我们去实现和操作,这就体现了面向过程的思想。
  面向过程开发,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。
  面向过程强调的是每一个功能的步骤。
  例如:
  我们在洗衣服的过程中,如果采用面向过程的思想,那么步骤应该为:
  把衣服脱下来---找一个盆---放洗衣粉---放水---浸泡十分钟---揉一揉---清洗---拧干---晾起来

二、面向对象思想概述

  当需求比较简单时,我们可以一步一步去操作。可是随着需求的增加,功能的增多,我们再面对每一个步骤就会比较麻烦了。这是我们就应该想,能不能把这些相同或相近的步骤和功能进行封装,这样结构就会比较清晰,使用时直接找到相应的类就可以了。
  面向对象强调的是对象,然后由对象去调用功能。
  例如:
  还是洗衣服的过程中,我们采用面向对象的思想,那么步骤应该为:
  把衣服脱下来---打开全自动洗衣机---放入衣服---放入洗衣粉---按按钮---晾起来

1、面向对象的思想特征

  • 是一种符合我们思考习惯的思想
  • 可以将复杂的事情简单化
  • 让我们从执行者变成了指挥者

2、如何模拟现实世界的事物

通过两个方面:

  • 属性  就是事物的描述信息
  • 行为  就是事物能够做什么

以学生来举例:
  学生的属性有:名字、年龄、性别等等
  学生的行为有:学习、玩游戏、运动等等

3、类和对象

  在Java语言中,最基本的组成单位是类,所以,我们都是通过类来体现事物的。

(1)类

  类就是一组相关的属性和行为的集合,是用来描述现实世界事物的。
  我们之前说,一个事物是由两个方面组成:属性和行为,那么,与之相对应的,我们的类包括两个方面:成员变量和成员方法。

成员变量:和我们之前变量的定义是一样的。

成员变量和局部变量的区别:

  • 在类中的位置不同:
      成员变量的定义在类中方法外
      局部变量定义在方法内或者方法声明上
  • 在内存中的位置不同
      成员变量在堆内存
      局部变量在栈内存
  • 生命周期不同
      成员变量随着对象的存在而存在,随着对象的消失而消失
      局部变量随着方法的调用而存在,随着方法的调用完毕而消失
  • 初始化值不同:
      成员变量有默认的初始化值
      局部变量没有默认的初始化值,必须先定义赋值才能使用

成员方法:和我们学习的方法的定义是一样的,但是有一个小区别:

  • 去掉了修饰符中的static

例如:我们需要定义一个学生类
学生事物:

  • 属性:姓名、年龄...
  • 行为:学习、吃饭...

学生类:

  • 成员变量:姓名,年龄...
  • 成员方法:学习、吃饭...

(2)对象

  我们是用一个类,其实就是使用该类的成员(成员变量和成员方法)。而我们想要使用一个类的成员,就必须先拥有该类的对象。创建对象的格式:

类名 对象名 = new 类名();

对象访问成员的格式:

对象名.成员变量;//访问成员变量
对象名.成员方法(...);//访问成员方法,省略号代表参数

示例:

//定义一个学生类
public class Student {
    // 学生的属性:姓名、年龄
    String name;
    int age;

    // 学生的行为:吃饭、学习
    public void eat() {
        System.out.println("吃饭");
    }

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

}

//定义一个测试类,调用学生类
public class StudentTest {
    public static void main(String[] args) {
        // 定义一个Student类的对象 s
        Student s = new Student();
        // 输出对象s的成员变量
        System.out.println("姓名:" + s.name);
        System.out.println("年龄:" + s.age);

        // 调用对象s的成员方法
        s.eat();
        s.study();

        // 给成员变量赋值
        s.name = "张三";
        s.age = 30;
        
        // 再次输出对象s的成员变量
        System.out.println("姓名:" + s.name);
        System.out.println("年龄:" + s.age);
    }
}

(3)内存图解

  首先定义一个手机类

//定义一个手机类
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+"发短信");
    }

}

然后定义一个对象调用手机类

public class PhoneTest1 {
    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);//"棕色"
        
        p.call("张三");
        p.sendMessage("张三");
    }

}
一个对象的内存图解

然后是定义两个对象的内存图解(共用方法区)

public class PhoneTest2 {
    public static void main(String[] args) {
        Phone p = new Phone();
        p.brand = "小米5s";
        p.price = 1999;
        p.color = "银色";
        System.out.println("品牌:" + p.brand);// "小米5s"
        System.out.println("价格:" + p.price);// 1999
        System.out.println("颜色:" + p.color);// "银色"
        System.out.println("------------");

        p.call("张三");
        p.sendMessage("张三");

        Phone p2 = new Phone();
        p2.brand = "华为P9";
        p2.price = 3288;
        p2.color = "灰色";

        System.out.println("品牌:" + p.brand);// "华为P9"
        System.out.println("价格:" + p.price);// 3288
        System.out.println("颜色:" + p.color);// "灰色"

        p2.call("李四");
        p2.sendMessage("李四");

    }

}
两个对象的内存图解(共用方法区)

最后是两个引用指向同一个堆内存

public class PhoneTest3 {
    public static void main(String[] args) {
        Phone p = new Phone();
        p.brand = "OPPO";
        p.price = 2999;
        p.color = "白色";
        System.out.println("品牌:" + p.brand);// "OPPO"
        System.out.println("价格:" + p.price);// 2999
        System.out.println("颜色:" + p.color);// "白色"
        System.out.println("------------");

        Phone p2 = p;
        p2.brand = "魅族";
        p2.price = 1999;
        p2.color = "蓝色";
        System.out.println("品牌:" + p.brand);// "魅族"
        System.out.println("价格:" + p.price);// 1999
        System.out.println("颜色:" + p.color);// "蓝色"
        System.out.println("----------");
        System.out.println("品牌:" + p2.brand);// "魅族"
        System.out.println("价格:" + p2.price);// 1999
        System.out.println("颜色:" + p2.color);// "蓝色"

    }

}
两个引用指向同一个堆内存

相关文章

  • day06-Java面向对象一(基础)

    06.01_面向对象(面向对象思想概述)(了解) A:面向过程思想概述第一步第二步 B:面向对象思想概述找对象(第...

  • 基础6-面向对象

    基础6-面向对象 ###06.01_面向对象(面向对象思想概述)(了解) * A:面向过程思想概述 *第一步 ...

  • Java基础03面向对象

    Java 基础02Java编程基础 面向对象上 面向对象的概述 面向对象的概述:面向对象是一种符号人类思维习惯的编...

  • 1.6 面向对象

    第 1章 面向对象思想 1.1 面向对象思想概述 概述 Java语言是一种面向对象的程序设计语言,而面向对象思想是...

  • 【从零开始学Java】学习笔记day012

    一 面向对象思想 1.1面向对象思想概述 概述 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序...

  • 类与对象、封装、构造方法

    1. 面向对象思想 1.1 面向对象思想概述 概述Java语言是一种面向对象的程序设计语言,而面向对象思想是一种...

  • 02-01 类与对象、封装、构造方法

    第1章面向对象思想 1.1面向对象思想概述 概述 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程...

  • 面向对象一——概述

    一、面向过程思想概述   我们在完成一个需求是,首先要清楚我们需要做什么,然后分析需要怎么做,最后再用代码去实现那...

  • Java基础笔记06

    06.01_面向对象(面向对象思想概述)(了解) A:面向对象思想概述找对象(第一步,第二步) B:举例买煎饼果子...

  • 面向对象基础

    一、面向对象概述 1、面向对象编程包括: OOA:面向对象分析OOD:面向对象的设计OOP:面向对象的编程实现 2...

网友评论

      本文标题:面向对象一——概述

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