面向对象总结

本文详细介绍了面向对象编程中的类、对象概念,它们之间的关系,类的组成(字段和方法),创建类的语法,以及实例化、初始化过程。讨论了成员变量、局部变量的区别,构造方法、重载、this关键字和访问修饰符的应用。同时阐述了封装、继承、静态成员和实例成员的概念,以及静态初始化、封装优点和实现步骤,以及Java的单继承规则和继承的使用方式。

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

面向对象

什么是类

类是具有相同的状态和相同的行为的一组对象的集合

什么是对象

对象就是真实具体存在的个体

类和对象的关系

类是对象的模版 对象是类的具体实例 类和对象的关系就是抽象和具体的关系

类的组成

类由字段和方法两部分组成

创建类

类是一类事物的集合和抽象,代表这这类事物共有的字段和行为,一个对象称为类的一个实例,是类一次实例化的结果

创建语法:

类名   对象名 = new 类名();
  1. new是关键字,称为实例化
  2. 左边的类名为对象的数据类型
  3. 右边的类名()成为类的构造方法
  4. 使用new运算符实例化了一个Person的对象
  5. 实例化的结果是产生一个Person类的实例,这个实例的名称就是对象名

new

new是实例化对象,实例化对象就是定义变量,定义变量时jvm就要分配内存,因此实例化的过程就是为对象分配内存的过程

初始化实例的过程

在Java中,创建一个对象时,使用类的构造函数来初始化对象。下面是创建一个Person对象的语句Person person = new Person();的执行顺序以及各部分的操作意义:

  1. new Person():这部分代码使用new关键字创建一个Person类的新实例。它会在内存中分配一块空间来存储该对象的数据。
  2. Person():这是Person类的构造函数。构造函数是一个特殊的方法,用于初始化对象的状态。它没有返回类型,并且与类名相同。在创建对象时,构造函数会被自动调用。
  3. =:赋值操作符,将右侧的对象引用赋值给左侧的变量person。这样,变量person就指向了新创建的Person对象。
  4. Person person:这是声明一个变量person,类型为Person。这样,我们可以使用变量person来引用和操作该对象。

成员变量

成员变量的作用域

类中的字段是直接定义在类的内部、方法的外部的变量,称为成员变量

局部变量

局部变量就是定义在方法内部的遍历,局部变量只能在方法内部使用

成员变量和局部变量的区别

  1. 作用域不同。局部变量的作用域仅限定于定义他的方法,在方法外无法使用,成员变量的作用域是在整个类内,所有的成员方法都可以使用它,如果访问权限容许,还可以在外部类使用成员变量
  2. 初始值不同。对于成员变量,如果在类定义中没有给他赋予初始值,java会给他一个默认值。但是java不会给局部变量赋初始值,因此局部变量在使用前必须初始化
  3. 在同一个方法中不容许有同名的局部变量,在不同的方法中可以有同名的局部变量
  4. 局部变量可以和成员变量名相同,并且使用时局部变量有更高的优先级

按值传递

对于基本数据类型,不同的变量会分别在不同的存储空间中,并且存储空间中存储的是该变量的值。赋值操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值

对于引用数据类型,赋值是吧源对象的引用(内存地址编号)传递给另一个引用,这两个引用指向一个内存空间,其中任何一个引用修改了属性的值,另一个属性的值同时也被改了

构造方法

java中当创建一个类的对象时,会自动调用该类的构造方法。

  1. 构造方法分为默认构造方法和自定义构造方法。
  2. 构造方法时一种特殊的实例方法
  3. 它的名称和类名相同,没有返回值
  4. 使用new关键字创建对象实例时会自动被调用
  5. 每个类都必须有一个构造方法,如果没有定义构造方法,系统就会自定义一个构造方法
  6. 构造方法不能被继承
  7. new Xxx()来创建对象实例

方法的重载

方法重载是指在一个类中定义多个同名方法,但要求每个方法具有不同的参数类型或参数个数或参数顺序

方法的返回值不能作为方法是否构成重载的依据

this关键字

this关键字是对一个对象的默认引用,每个实例方法内部都有一个this引用变量,指向这个方法的对象

  1. 使用this调用成员变量,解决成员变量与局部变量的同名冲突
  2. this可以调用成员方法
  3. this调用重载的构造方法,只能在构造方法中使用,且必须是构造方法的第一条语句
  4. 因为this是在对象内部代表自身的引用,所以this只能调用实例变量、实例方法和构造方法,不能调用类变量、类方法,也不能调用局部变量

访问修饰符

类访问修饰符

java的类访问修饰符只有两个,分别是public和package-access(包访问修饰符)

同一包中不同包中
public可以使用可以使用
package-access可以使用不可以使用

类成员访问修饰符

位置publicprotected包访问修饰符private
同类访问可以可以可以可以
同包其他类访问可以可以可以不可以
同包子类访问可以可以可以不可以
不同包子类访问可以可以不可以不可以
不同包非子类访问可以不可以不可以不可以

注:访问修饰符不能用于方法中声明的变量或形式参数,因为方法中的变量或形式参数的作用域仅限于该方法,在方法外是不可见的,在其他类无法访问

static关键字

一个类可以创建n个对象,如果把n个对象中的某些数据需要n个对象共用,就可以使用static关键字修饰这些数据

java中使用static关键字可以通过类名.直接调用类的成员

static修饰属性

使用static修饰的属性称为静态属性或类变量,没有static修饰的属性称为实例变量。使用static修饰的属性属于类,不属于具体的某个对象,类属性在首次被加载时初始化,即时没有创建对象,类属性也是存在的

static修饰方法

用static修饰的方法称为静态方法或者类方法,不是static修饰的方法称为实例方法,类方法不依赖于如何对象,用类名直接.调用,对象名也可以调用。使用static修饰的方法属于类,不属于某个具体的对象


提示:静态方法中不能直接访问实例变量和实例方法

提示:在实例方法中可以直接调用类中定义的静态变量和静态方法

静态初始化

Java中静态初始化是一种在类被加载时执行的初始化方式,用于初始化类的静态变量和执行一些静态代码块

静态初始化代码块在类被加载时只执行一次,且只能访问类的静态变量和方法。静态初始化的执行顺序是按照代码块在类中出现的顺序执行的

静态成员和实例成员的区别

  1. 静态成员是类的成员,实例成员是对象的成员。静态成员是在类加载时初始化,只有一个副本,可以被类的所有对象共享;实例成员是在对象创建时初始化,每个对象都有自己的一份。
  2. 静态成员可以直接通过类名访问,不需要创建对象;实例成员需要对象来访问
  3. 静态成员可以在静态初始化块中初始化,实例成员需要再构造函数中初始化

封装

Java中封装的实质就是将类的状态信息(成员变量)、方法等隐藏在类内部,不容许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问,在java中,可以使用访问修饰符来控制类中的数据和方法的访问级别,从而实现封装

封装的优点

  1. 防止外部直接访问类的内部数据,可以保护数据的安全性
  2. 通过限制外部访问,可以更好的控制数据的正确性和完整性
  3. 可以隐藏类的实现细节,使的类的用户不需要了解类的内部实现细节,只需要知道如何使用提供的接口

封装的步骤

  1. 修改字段的可见性==将字段改为private
  2. 设置getter/setter方法
  3. 设置字段的存取限制

封装的意义

  1. 隐藏类的内部细节
  2. 通过限制外部访问,可以更好的控制数据的正确性和完整性
  3. 可以更加灵活的修改类的内部代码
  4. 封装可以提高代码的重用性

继承

java类中只支持单继承,即一个类只能有一个直接的父类

继承的基本概念

  1. 子类可以继承父类的非私有属性和方法
  2. 子类可以添加自己的属性和方法
  3. 子类的构造方法可以调用父类的构造方法
  4. Object类是所有类的根类

使用继承和重写实现子类

  1. 使用继承定义部门类及子类
  2. 使用super关键字调用父类的成员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值