Java之面向对象思想

守給你的承諾、 提交于 2019-12-04 14:16:51

面向对象思想概述

Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下, 使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性行为。面 向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算 机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。

  • 面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节。(强调步骤)
  • 面向对象:当需要实现一个功能的时候,不关心具体的步骤,而是找一个已经具有该功能的人,来帮我做事儿。(强调对象)

特点

面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。 面向对象的语言中,包含了三大基本特征,即封装、继承和多态。

类和对象

什么是类

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

现实中,描述一类事物:

  • 属性:就是该事物的状态信息。例如:小猫的名字、体重、年龄、颜色。
  • 行为:就是该事物能够做什么。例如:小猫的走、跑、叫。

什么是对象

对象:是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性 和行为。

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

  • 属性有:tom、5kg、2 years、yellow 等等。
  • 行为有:溜墙根走、蹦跶的跑、喵喵叫。

类与对象的关系

  • 类是对一类事物的描述,是抽象的
  • 对象是一类事物的实例,是具体的
  • 类是对象的模板,对象是类的实体

怎么定义类

Java语言就是对现实世界的模拟,事物与类的对比 现实世界的一类事物: 属性:事物的状态信息。 行为:事物能够做什么。 Java中用class描述事物也是如此: 成员变量:对应事物的属性 成员方法:对应事物的行为。

类的定义格式

详解:

  • 定义类:就是定义类的成员,包括成员变量成员方法
  • 成员变量:和以前定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外
  • 成员方法:和以前定义方法几乎是一样的。只不过是没有static修饰,static的作用在面向对象后面再详细讲解。

需求

定义一个类,用来模拟“学生”事物。学生有姓名,年龄。学生还会吃饭,睡觉,学习。

代码实现

package demo01_OOP;

public class Demo01Student {
    //成员变量
    String name;//姓名
    int age;//年龄

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

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

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

}

对象的创建及其使用(如何使用一个类)

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

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

  • 格式:import 包名称.类名称;

tips:

  • 对于和当前类属于同一个包的情况,可以省略导包语句不写。
  • 使用import关键字导包,在类的所有代码之前导包,引入要使用的类型,java.lang包下的所有类无需导入。

2. 创建对象

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

3. 使用,分为两种情况:

  • 使用成员变量:对象名.成员变量名
  • 使用成员方法:对象名.成员方法名(参数)
  • 总结:(也就是,想用谁,就用对象名点儿谁。)

注意事项:

  • 如果成员变量没有进行赋值,那么将会有一个默认值,规则和数组一样。

使用Demo01Student类

package demo01_OOP;

public class Demo01StudentTest {
    public static void main(String[] args) {
        //1:导包:在类的所有代码之前导包,引入要使用的类型
        //2:创建对象: 根据Student类,创建了一个名为student的对象
        Demo01Student student = new Demo01Student();
        //3. 使用其中的成员变量:
        System.out.println(student.name);
        System.out.println(student.age);
        //改变对象当中的成员变量数值内容,将右侧的字符串,赋值交给student对象当中的name成员变量
        student.name = "张三";
        student.age = 888;
        //使用其中的成员变量:
        System.out.println(student.name);
        System.out.println(student.age);

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


}

代码执行后的结果

 关于对象的几点注意事项

  • 每个对象的成员变量都保存在内存的堆内存中,独立存在,互不影响。
  • 在栈内存中运行的方法,遵循"先进后出,后进先出"的原则。对象调用方法时,根据对象中方法标记(地址值),去类中寻找方法信息。这样哪怕是多个对象,方法信息 只保存一份,节约内存空间。
  • 对象是引用类型,当使用一个对象类型作为方法的参数或者返回值,传递的是对象的内存地址值

成员变量和局部变量区别

变量根据定义位置的不同,我们给变量起了不同的名字。如下图所示:

在类中的位置不同  (重点)

  • 成员变量:类中,方法外
  • 局部变量:方法中或者方法声明上(形式参数)

作用范围不一样(重点)

  • 成员变量:类中
  • 局部变量:方法中

初始化值的不同 (重点)

  • 成员变量:有默认值
  • 局部变量:没有默认值。必须先定义,赋值,最后使用

在内存中的位置不同

  • 成员变量:堆内存
  • 局部变量:栈内存

生命周期不同

  • 成员变量:随着对象的创建而存在,随着对象的消失而消失
  • 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

成员变量的默认值

如下图所示

 

 


 

 

 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!