面向对象结构化学习
发布日期:2021-05-10 05:16:42 浏览次数:22 分类:精选文章

本文共 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操作和延迟加载。

内部类与迭代器模式

内部类可以通过实现迭代器模式来提供高效的数据结构。

局部内部类

在方法体中定义内部类。

匿名类

匿名类常用于事件处理和回调机制。

嵌套类

嵌套类是指在类体内定义的静态内部类。嵌套类只能访问外部类的静态成员。

上一篇:equals和==
下一篇:面向对象思想

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年05月10日 20时18分08秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Python&aconda系列:Jupyter Notebook快速上手、深度学习库PyTorch安装 2023-01-23
Python&aconda系列:(W&L)Conda使用faiss-gpu报错及解决办法、安装numpy的坑、cmd执行Python脚本找不到第三方库、安装tensorflow-gpu时遇到的from 2023-01-23
python&anconda 系列:Pycharm在debug问题的N种解决方案(一般程序、web方向、人工智能方向) 2023-01-23
python&anconda系列(亲测有效):tensorflow AttributeError: ‘str’ object has no attribute ‘decode’ 2023-01-23
python&anconda系列:tf.keras.backend.get_session()和keras.backend.get_会话()返回不同的会话对象(待解答) 2023-01-23
"WARNING: Increasing RAM size to 1GB" and "Cannot set up guest memory 'xxx.ram': Invalid argument". 2023-01-23
#if 0 #elif 1 #else #endif 用法 2023-01-23
#include <gdiplus.h>出错 2023-01-23
$ajax({}).done 和 $ajax({}) success 区别 2023-01-23
'ascii' codec can't encode characters in position 0-4: ordinal not in range(128) 2023-01-23
(反射+内省机制的运用)处理jdbc的结果集 2023-01-23
(反射+内省机制的运用)简单模拟spring IoC容器的操作 2023-01-23
#C8# UVM中的factory机制 #S8.2.3# 重载 component 哪些情形 2023-01-23
(转)SQLServer全局变量 2023-01-23
(转)tomcat7.0 manager app和host manager web管理 2023-01-23
(转)【英雄会即时报道】五大CTO畅谈软件公司如何招聘技术人才 2023-01-23
(转)使用公用表表达式的递归查询(SQLSERVER2005) 2023-01-23
(转)在CListView列表视图中添加右键菜单的方法 2023-01-23
(转)考虑错误情况 2023-01-23
++b&&a--运算结果解析 2023-01-23