Java复习笔记(八)面向对象

面向对象

一、万物皆对象

  人类从小就不断的接触到各种各类存在世界上的各种生物,然后通过事物的公共特性,将它们归类,所以以后就不会出现见到猫叫老虎。那么我们在现实生活中,是通过具体的某个事物归纳总结它们的公共特性然后产生类那么类就描述了该种事物的类别、共性,相当于造事物的图纸,我们可以根据这个图纸去做出具体的实体对象。

类和对象

对象:在现实生活中存在具体的一个事物。;
类:实际就是对某种类型事物的共性属性与行为的抽取。
人类认识世界: 对象—-类。
在java中: 类 —–对象。

使用计算机语言就是不断的在描述现实生活中的事物。
java中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义。
对象即是该类事物实实在在存在的个体。
类与对象的关系如图

可以理解为:
类就是图纸
汽车就是堆内存中的对象

二、面向对象的概述

  “面向对象”(英语:Object Oriented,简称OO)是一种以事物为中心的编程思想。
  面向对象程序设计(英语:Object-oriented programming,缩写:OOP),是一种程序开发的方法。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。
  面向对象时相对于面向过程而已的(c则是一个典型的面向过程的语言),站在面向对象的角度去看问题,你则是对象的动作的指挥者。如果站在面向过程的角度去看问题,你则是动作的执行者。

三、面向对象与面向过程对比

1.思考方式

  面向过程:分析解决问题所需要的步骤,通过分别去实现对应的函数来完成每一个步骤,使用的时候一次去调用对应的函数即可;

  面向对象:面向对象的是把所处理的问题先抽象起来,以对象为中心封装成不同的类,然后在实例化成具体的对象,来描述某个事物在整个解决问题中的行为。

2.实现方式

面向对象:将所要描述的事物进行高度抽象化

面向过程:采取自顶向下、逐步细化的方式

3.优缺点比较

面向过程:

  优点:性能相对优于面向对象,因为不需要面向对象类的实例化开销那样消耗资源;

  缺点:难以维护,复用,扩展;

面向对象:

  优点:易维护、复用、扩展,系统使用灵活方便;

  缺点:性能低于面向过程;

四、对象

  对象(object)代表现实世界中可以明确标识的一个实体。例如:一个学生、一张桌子、一间教室,一台电脑都可以看做是一个对象。每个对象都有自己独特的状态标识和行为 。

  对象的属性(attribute,或者状态(state)),学生有姓名和学号,该学生特有的姓名和学号就是该学生(对象)的属性。
  对象的行为(behavior),是由方法定义,调用对象的一个方法,其实就是给对象发消息,要求对象完成一个动作。可以定义学生对象具备学习的行为。学生对象可以调用学习的方法,执行学习的动作

五、面向对象的特征

1.封装(encapsulation)
2.继承(inheritance)
3.多态(polymorphism)

六、使用java来描述事物

通过Java语言定义一个汽车类,并生产出汽车,有颜色,轮胎个数, 有运行的功能。

  如何描述现实世界中的事物,描述该事物的属性和行为,汽车具有颜色和轮胎数的属性,具备运行的行为。如何使用Java语言进行转换?

根据对应关系:
属性:类中的成员变量
行为:类中的成员函数
那么定义Java类就是定义一个类的成员。汽车类具备的成员是:颜色,轮胎数,运行方法。

public class Car {
    String color;// 成员变量
    int num; // 成员变量

    // 成员函数
    void run() {
        System.out.println(color + "的车有" + num + "个轮胎,可以跑");
    }
}

七、对象的创建

创建Car对象
1. 使用new关键词,就像new数组一样
2. 需要给型的汽车起一个名字,car
3. 变量都是有类型的,car属于什么类型,属于Car类型,叫做类类型
4. Car car=new Car();
图纸画好了,类定义成功了。如何根据图纸生产汽车,在Java中如何根据类来生产一个对象。
Java中生产汽车比较简单,通过一个关键字”new”, 通过 new Car(); 就在内存中产生了一个实体,汽车对象就生产出来了。
汽车对象生产出来后,还没有名字,为了方便使用,需要起一个名字。就用小写的C 来表示新车的名字。
Java中的变量都需要有类型。那么c 是什么类型呢?c 是Car类型,所以c也叫做类类型变量。

class Main {
    public static void main(String[] args) {
        Car c = new Car();
        c.run(); 
    }
}

八、对象成员的调用

对象调用是指对:1. 成员变量 2. 成员方法 的调用。

public class Main {
    public static void main(String[] args) {
        Car c = new Car();
        int num=c.num; 
        System.out.println(num);
        c.num = 4;
        c.color = "black";
        c.run();
    }
}

九、局部变量和成员变量

1.定义

  成员变量: 定义在类中变量
  局部变量: 定义在方法中变量

2.成员变量与局部变量的区别:

(1)应用范围
成员变量在整个类内都有效
局部变量只在其声明的方法内有效

(2)生命周期
  成员变量: 它属于对象,它随着对象的创建而创建,随着对象的消失而消失
  局部变量: 使用完马上释放空间。

(3)存储位置
  成员变量属于对象,它存储在堆内,堆内的实体,当没有引用指向其时,才垃圾回收清理
  局部变量存在栈内存中,当不在使用时,马上就会被释放。

(4)初始值
  成员变量它存储在堆中,如果没有赋初值,它有默认值。

    整数byte、short、int、long =0;
    char='\uoooo';
    boolean =flase;
    String =null;
    类类型 =null;
    数组 =null;

  局部变量,如果要想使用必须手动初始化.

    i.  方法中,参数列表中,语句中。
    ii. 必须给初始化值,没有初始值,不能使用
    iii.    在栈内存中

猜你喜欢

转载自blog.csdn.net/qq_29615991/article/details/80292373