
本文共 1988 字,大约阅读时间需要 6 分钟。
Java面向对象编程核心概念
Java语言的最大特点是使用面向对象的思想进行设计和编码。在面向对象的语言中,大多使用class来表示一种新类型,Java也采用了该关键字。在类中可以设置两种类型的元素:字段(也称为数据成员)和方法(也称为函数成员)。
字段
字段是类中存储数据的基本单元。Java中的字段可以分为两种类型:基本数据类型字段和引用类型字段。
基本数据类型字段和引用类型字段
基本数据类型字段是指存储直接的值(如整数、字符等),而引用类型字段则是存储对象的引用。
类型字段和实例字段
类型字段属于类本身,而实例字段属于具体的实例。
final字段和非final字段
final字段表示常量字段,其值一旦设置后不能更改。
static字段和非static字段
static字段属于类字段,非static字段属于实例字段。
方法
方法是类中进行操作的基本单元。Java中的方法可以传值或传引用。
传值和传引用
final参数表示该参数在方法体中不能被修改。对于基本类型,表示该基本类型不可被重新赋值;对于引用类型,表示不能更改参数引用所指向的对象。
类方法和实例方法
static方法属于类,普通方法属于实例。
final方法和非final方法
final方法表示不可继承,所有的私有方法都是final方法。
重载
重载是指在类中定义多个方法,参数的顺序或类型不同,但返回类型相同。
可变参方法
可变参方法可以接收任意数量的参数,使用...表示可变参数。
static关键字
static关键字用于表示静态成员,包括静态类、静态字段和静态方法。
静态导包
static关键字也可以用于import语句,表示默认引用导入包的所有静态数据。
静态类
static类可以被多个线程安全地访问。
静态字段
static字段可以被多个线程共享。
静态方法
static方法可以通过类名直接调用。
final关键字
final关键字用于说明这是一个常量。final可以修饰数据、方法和类。
final数据
final数据是一个永不改变的编译时常量。
final参数
final参数表示不能更改参数引用所指向的对象。
final方法
final方法表示不可继承。
final类
final类表示不希望继承的类。
初始化和清理(构造器)
在Java中,对象的创建、初始化和清理都由构造器完成。
构造器
构造器用于初始化对象的状态。
成员默认值和初始化
成员变量会设置默认值,构造器可以用于初始化成员变量。
指定初始化
可以通过直接赋值或方法调用来初始化变量。
构造函数初始化
构造函数中成员初始化的原则是先静态对象后非静态对象,先字段、再初始化块、再构造函数、再其他方法。
this关键字
this关键字用于引用当前对象。
this逃逸
在构造函数中,this逃逸可以避免。
清理:终结处理和垃圾回收
finalize()方法
finalize()方法用于释放不基于new方法创建的对象占用的内存空间。
访问控制
Java提供访问权限修饰符,用于控制类、字段和方法的访问。
package
包用于将一组类组织在一起,类名空间的划分。
包访问权限
包内类可以自动访问,包外类访问需明确。
public、private、protected
public:所有类都可以访问。
private:只有所属类的成员可以访问。
protected:同一包的类和扩展类型的成员可以访问。
类访问权限
外部类的访问权限只能是public和包访问权限。
封装
封装是指通过访问权限控制,隐藏具体实现细节。
继承与组合
组合适用于需要使用现有类的功能而非接口的情况,继承适用于需要使用现有类的接口的情况。
继承(is-a)
表示一个类是另一个类的子类。
组合(has-a)
表示一个类包含另一个类的对象。
多态(后期绑定)
多态通过动态绑定实现,实现在调用父类方法时表现出子类的特性。
引用类型转换
向上转型是将子类引用转换为父类引用。
绑定
绑定将一个方法调用关联到同一个方法体,根据绑定时间分为前期绑定和后期绑定。
前期绑定
在程序执行前进行绑定。
后期绑定
在运行时根据对象类型进行绑定。
构造器与多态
尽量不要在构造器中使用后期绑定的方法,以避免多态带来的不确定性。
协变返回类型
协变返回类型可以扩展多态的功能。
接口
接口用于定义类的行为规范,类可以实现接口的方法,但不需要继承接口。
内部类
内部类可以实现真正意义上的多重继承,适用于callback操作和延迟加载。
内部类与迭代器模式
内部类可以通过实现迭代器模式来提供高效的数据结构。
局部内部类
在方法体中定义内部类。
匿名类
匿名类常用于事件处理和回调机制。
嵌套类
嵌套类是指在类体内定义的静态内部类。嵌套类只能访问外部类的静态成员。
发表评论
最新留言
关于作者
