面向对象是一种重要的编程思想,它将现实世界中的实体抽象成程序设计中的对象,通过对象来组织和构建软件系统。下面是对面向对象的一些重要知识点进行详细总结: ### 面向对象的基本概念 #### 类与对象 - **类**: 定义了对象的属性和行为,是一种模板或蓝图。类本身并不占用内存空间。 - **对象**: 是类的一个实例,每个对象都有其自身的状态(由属性表示)和行为(由方法表示)。对象占用实际的内存空间。 #### 类的表示方法 - `+` 表示 public 访问修饰符,意味着该成员可以被任何类访问。 - `-` 表示 private 访问修饰符,意味着该成员只能在当前类内部被访问。 - `+legs:int` 表示一个名为 legs 的 int 类型的公有成员变量。 #### 局部变量 - **局部变量** 必须在使用前进行初始化,否则编译器会报错。 - 局部变量存在于栈内存中,随着方法的调用而存在,随着方法的结束而销毁。 ### 封装 - **封装** 是面向对象的核心原则之一,通过将数据隐藏起来,并提供公共接口(即 set 和 get 方法)来操作这些数据,可以增强数据的安全性和减少外部代码对数据的误用。 - 私有化成员变量:通过将类的属性设置为 private 来实现。 - 添加 set/get 方法:用于读取和修改私有属性的值。 - **判断**:在 set 方法中可以加入条件判断语句,确保数据的有效性。 ### 构造方法 - **构造方法** 用于初始化对象的状态。构造方法的名称必须与类名相同,没有返回值类型(连 void 也不能有)。 - **构造方法重载**:在一个类中可以定义多个构造方法,只要它们的参数列表不同即可。 ### 成员变量与局部变量的区别 - 成员变量定义在类中,而局部变量定义在方法内部。 - 成员变量存储在堆内存中,随对象的创建而存在;局部变量存储在栈内存中,随方法的调用而存在。 - 成员变量有默认值,而局部变量没有,默认值取决于数据类型(例如 int 类型的成员变量默认值为 0)。 ### 方法重写与重载 - **方法重写** 发生在父类和子类之间,子类中出现与父类同名的方法,要求方法名、参数列表以及返回值类型都完全相同,且子类方法的访问级别不能比父类更严格。 - **方法重载** 在同一个类中出现方法名相同但参数列表不同的方法。 ### 继承 - **继承** 是面向对象编程语言中的一个重要特性,允许一个类继承另一个类的属性和方法。Java 支持单继承和多层继承,但不支持多继承。 - **基类**(即父类)是所有类的根类,Java 中的基类是 Object 类。 - **所属关系**(isa)指的是一个类(子类)是另一个类(父类)的一种特例。 ### 多态 - **多态** 是指一个接口可以有多种不同的实现方式,或者同一个行为具有多种不同的表现形式。主要体现在方法重载、方法重写、抽象类、接口以及对象的转型等。 - **上转型** 指的是将子类的对象赋值给父类的引用变量,这是自动进行的。 - **下转型** 指的是将父类的对象赋值给子类的引用变量,需要显式地进行类型转换。 ### final 关键字 - `final` 修饰的类不能被继承,修饰的方法不能被重写,修饰的变量成为常量。 - `final` 变量如果未在声明时初始化,则必须在构造方法中初始化。 ### static 关键字 - `static` 修饰的方法称为类方法,可以直接通过类名调用。 - `static` 方法只能访问类的静态成员,不能访问非静态成员。 - `static` 变量是类变量,所有对象共享同一个副本。 ### 抽象类与接口 - **抽象类** 包含抽象方法,不能被实例化,主要用于作为其他类的基类。 - **接口** 是一组抽象方法的集合,所有方法默认都是 public abstract 的。 - **多接口实现**:一个类可以实现多个接口,但只能继承一个类。 - **抽象类与接口的区别**:抽象类可以包含具体实现,而接口不能;抽象类中可以有构造方法,接口中不能;抽象类可以继承其他类并实现多个接口,接口只能继承其他接口。 以上是对面向对象编程中一些核心知识点的总结,理解这些基本概念对于学习面向对象编程至关重要。
剩余9页未读,继续阅读
- 粉丝: 1
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助