> 文档中心 > 面向对象&&面向过程,重在理解本质

面向对象&&面向过程,重在理解本质

生如逆旅,一苇以航!

文章目录

    • 面向过程&&面向对象
      • 面向对象(Object-Oriented Programming OOP)
    • 方法的调用
      • ==同一个类中方法之间的相互调用实例==
    • 值传递&&引用传递
    • 构造器
    • new的创建、类的调用在内存中的简单分析

面向过程&&面向对象

  • 属性+方法 -->类

  • 面向过程

    1. 步骤清晰简单,第一步…第二步…
    2. 面向过程适合处理一些简单的问题
  • 面向对象

    1. 物以类聚,分类的模式思维,思考问题时首先思考问题会进行哪些分类,然后对这些分类进行单独的思考。最后,才对某个分类下的细节进行面过程的思考
    2. 面向对象适合解决复杂的问题,适合处理多人协作的问题
  • 对于描述复杂的事务,为了从宏观上把握,从整体上理性分析,我们需要使用面向对象的思路去分析整个系统。但是具体到微观的操作,我们仍然需要使用面向过程的思路去处理。

面向对象(Object-Oriented Programming OOP)

  • 面向对象的实质,以类的方式组织代码,以对象的形式(封装)数据

  • 三大特征(先大概了解即可)

    1. 封装
      • 假如你有一万元,你需要把他们放在一个盒子里,同时你也需要留一个小口在你需要的时候去拿
    2. 继承
      • “儿子继承了父亲的特性”
    3. 多态
      • 每个人学习java,最终学的深度是各不相同的
  • 从认识的理论来说,先有对象后有类,对象是具体的事物,类时是抽象的

    • 人是对象,有的人当老师,有的人当医生…
  • 从代码运行的角度来说,先有类后有对象

    • 如果你没有"对象",直接 new 一个就有"对象"了

方法的调用

package com.operator;import com.operator.com.operator.Student;public class Demo1 {    public static void main(String[] args) { Student.say();    }}//*********************************************************public class Student {    public  static void say(){ //因为含有static 所以是静态方法 //如果是静态方法,在某个类(Demo1)直接用类名(Student).方法即可 System.out.println("学生说话了");    }}

在这里插入图片描述

同一个类中方法之间的相互调用实例

public class Demo1 {    public static void main(String[] args) {}    //在同一个类中,两个普通非静态的方法之间可以相互调用,不会报错    public void a(){ b();    }    public void b(){ ;    }    //在同一个类中,两个普通静态的方法之间可以相互调用,不会报错    public static void c(){ d();    }    public static void d(){} //static是和类一起加载的    public static void e(){ f(); //所以一个已经存在的去调用一个还没有存在的所以报错    }    //不含static的普通方法是在类实例化之后才存在的    public void f(){}}

值传递&&引用传递

  • 一个类中只能有一个public class 但可以有多个 class
  • 引用传递: 传递的是对象 本质还是值传递
//值传递public class Demo1 {    public static void main(String[] args) { int a=1; System.out.println(a);//1 change(a); System.out.println(a);//1    }    private static void change(int a){ a=10;    }}//引用传递public class Demo1 {    public static void main(String[] args) { Person person=new Person(); System.out.println(person.name);//null change(person); System.out.println(person.name);//Cx_330    }    private static void change(Person person){ person.name="Cx_330";    }}class Person{    String name;}

  • 一般在一个项目中我们只需要定义一个 main方法在一个类中即可,通过调用的方法实现其它类中某些功能实现

  • 任何类都只由两部分组成 属性(字段) 方法

  • 类是抽象的,需要实例化

  • 类实例化之后会返回一个自己的对象

    //假设Student是一个类Student student=new Student();//那么进行完这一行代码之后:    student对象是Student类的一个实例化

构造器

  • 与类名相同,没有返回值的public方法
  • 构造器的作用
    • 实例化初始值
      1. 使用new关键字,本质是在调用构造器
      2. 用来初始化值
  • 一旦定义了有参构造,无参就必须显示定义
  • 在idea中有一个快捷键 Alt+insert 会自动生成构造器

new的创建、类的调用在内存中的简单分析

在这里插入图片描述

在这里插入图片描述

三国人物百科