• java面向对象(上)


    一.面向对象与面向过程

    1.面向过程

    面向过程(procedure Oriented Programming),简称POP,主要思想就是将问题分解成一个个步骤去解决,把这个步骤称为函数.

    典型语言:C语言

    优点:可以大大简化代码

    缺点:当代码量过大时,不方便维护

    2.面向对象

    面向对象(Object Oriented Programming),简称OOP,主要思想是首先分析解决该问题需要哪些功能,抽象出事物的特征,再将这些功能和特征封装成类.

    典型语言:C++,java,python

    优点:适合解决复杂问题,代码的维护性高,扩展性强

    总结:面向对象和面向过程两者是相辅相成的,当面向对象对功能具体实现时,利用的也是面向过程的思想

    二.类

    1.类的结构

    类:一些拥有相同特征的事物的抽象,类中可以定义以下内容

    (1)成员变量:即事务的属性描述

    (2)方法:事务的行为动作进行定义

    (3)构造方法:初始化对象

    (4)块:一段没有名称的代码块

    (5)内部类:即在类中定义的类

    2.类的定义

    (1)发现类:将问题中的事务抽象成一个个类的过程

    类的声明格式:[访问权限修饰符] [修饰符] class [类名]

    访问权限修饰符:public,无(默认)

    修饰符:final,abstract

    关键字class用来定义一个类,类名首字母大写

    (2)发现类的共有属性(成员变量)

    成员变量的声明格式:[访问权限修饰符] [修饰符]  type 变量名

    注意:

    (1)成员变量是定义在方法体之外,类当中的变量

    (2)成员变量的作用范围是整个类域

    (3)成员变量的类型可以是java中的任意类型(基本类型和引用类型)

    (4)在定义成员变量时,可以对其进行初始化,如果不初始化,java使用默认值对其初始化

    (5)成员变量可以被类中方法、构造方法和特定类的语句块访问.

    (3)发现类中的共有行为(成员方法)

    成员方法的声明格式:[访问权限修饰符] [修饰符] 返回值 方法名(形参类型 形参名...){方法体}

    三.对象

    1.什么是对象

    对象:是类的具体实例,是以类为模板在内存中创建的实际存在的实例

    2.如何创建对象

    Car car = new Car();

     java中利用new关键字可以在内存中开辟一个空间用来存储对象的信息,并返回该内存地址,之后利用car引用来指向该内存地址,就可以使用该对象

    3.类和对象的关系

    类是抽象的模板,对象是具体的实例,现实中是先有对象再有类,而编程时先有类,再有对象

    四.构造方法 

    构造方法:给成员变量赋初值

    (1)方法名与类名相同

    (2)无返回值,且不用void修饰

    (3)类中会默认生成一个无参的构造函数,给成员变量赋默认值

    (4)如果自己定义了有参构造方法,则类中的无参构造方法不会生成,要想使用时,要自己显示写出来

    五.方法的重载

    方法的重载:在同一个作用域中,可以有多个方法名相同,参数不同的方法,就叫方法的重载

    参数不同(主要有三方面不同)

    (1)参数的个数不同

    (2)参数的类型不同

    (3)参数的顺序不同

    调用时,会根据参数不同去选择具体调用哪一个方法

    注意:方法的重载和返回值无关

    六.对象与引用

    1.对象与引用的关系

    java中除了基本类型,其他的都是引用类型,我们创建的对象就是通过引用对其进行操作的

    Car car = new Car();

    这句话实际上有三层含义

    (1)我们声明了一个引用变量car,它的类型是Car,即Car car;

    (2)new Car();在堆中开辟了一个Car类型的对象

    (3)car = new Car();将该对象的地址赋给car这个引用变量,相当于car指向了该对象的地址空间,所以我们可以通过car这个引用变量去操作该对象.

    引用其实类似C语言中的指针,不过使用上更加方便

    2.值传递与引用传递

    值传递:基本数据类型在传参时,使用的是值传递,即形参是实参的临时拷贝,形参的改变不会影响实参

    引用传递:引用类型和引用类型之间的传参,传的是地址,一方改变了该引用所指向的内容,另一方的也会改变,因为两个引用指向的是同一个地址

  • 相关阅读:
    Leetcode6233-温度转换
    BSA-PEI,牛血清白蛋白-聚乙烯亚胺,BSA-聚乙烯亚胺的保存
    input标签的23种type类型
    Java_接口使用实例
    基于SSM+SpringBoot+MySQL+Vue前后端分离的高校考试管理系统
    上云网关EasyNTS遇到IP冲突时,如何正确更改IP地址?
    《人类简史》笔记二——一场永远的革命
    52单片机独立键盘控制数码管计数
    研发效能/DevOps的道法术器
    Minecraft 1.16.5 生化8 模组 1.9版本 1.18版本同步
  • 原文地址:https://blog.csdn.net/qq_64782704/article/details/139826627