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

本文介绍了面向过程和面向对象的区别,强调面向对象在处理复杂问题时的优势。面向对象编程(OOP)的核心包括封装、继承和多态。通过实例展示了类与对象的关系,方法调用,值传递与引用传递的概念,并探讨了构造器和内存管理。此外,还讨论了类的实例化和静态方法的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生如逆旅,一苇以航!

面向过程&&面向对象

  • 属性+方法 -->类

  • 面向过程

    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的创建、类的调用在内存中的简单分析

在这里插入图片描述

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C_x_330

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值