Java面向对象编程(OOP)的四个主要特征

目录

1. 封装 (Encapsulation):

2. 继承 (Inheritance):

3. 多态 (Polymorphism):

4. 抽象 (Abstraction):


Java面向对象编程(OOP)有四个主要特征:封装继承多态抽象。这些特性是 OOP 的核心概念,帮助构建灵活、可维护的代码结构。

1. 封装 (Encapsulation):

封装是将对象的属性(变量)和行为(方法)绑定在一起,并对外界隐藏其内部实现细节。通过将类的属性声明为私有 (private),并通过公共的访问方法(getterssetters)来控制对这些属性的访问,封装可以提高代码的安全性和可维护性。

public class Person {private String name;  // 私有属性,只能通过getter和setter访问public String getName() {return name;}public void setName(String name) {this.name = name;}
}

2. 继承 (Inheritance):

继承允许一个类继承另一个类的属性和方法,从而实现代码复用。子类可以继承父类的所有属性和方法,并且可以重写(override)父类的方法,也可以添加自己独特的功能。继承关系通过 extends 关键字实现。

public class Animal {public void eat() {System.out.println("Animal is eating");}
}public class Dog extends Animal {public void bark() {System.out.println("Dog is barking");}
}

3. 多态 (Polymorphism):

多态性指的是同一行为在不同对象中的不同表现。Java 支持两种多态形式:编译时多态(方法重载)和 运行时多态(方法重写)。运行时多态是通过父类引用指向子类对象实现的,方法的具体实现由运行时决定。

public class Animal {public void sound() {System.out.println("Animal makes a sound");}
}public class Dog extends Animal {@Overridepublic void sound() {System.out.println("Dog barks");}
}public class Main {public static void main(String[] args) {Animal myAnimal = new Dog();  // 父类引用指向子类对象myAnimal.sound();  // 输出: Dog barks}
}

4. 抽象 (Abstraction):

抽象通过隐藏对象的实现细节,只暴露出必要的功能给用户。Java 通过 抽象类接口 来实现抽象。抽象类可以包含具体实现的方法,而接口则只定义方法的签名,具体实现由实现类提供。

abstract class Animal {public abstract void sound();  // 抽象方法,无具体实现
}class Dog extends Animal {@Overridepublic void sound() {System.out.println("Dog barks");}
}

这四个特征使得 Java 能够实现模块化、可扩展、灵活的代码设计,是面向对象编程的核心理念。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/147317.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

C语言实现常见的数据结构

栈 栈是一种后进先出&#xff08;LIFO, Last In First Out&#xff09;的数据结构 #include <stdio.h> #include <stdlib.h>#define MAX 100typedef struct {int data[MAX];int top; } Stack;// 初始化栈 void init(Stack *s) {s->top -1; }// 判断栈是否为空…

黄酮类化合物及其衍生物生物合成的进展:构建酵母细胞工厂的系统策略-文献精读50

Advances in Flavonoid and Derivative Biosynthesis: Systematic Strategies for the Construction of Yeast Cell FactoriesCli 黄酮类化合物及其衍生物生物合成的进展&#xff1a;构建酵母细胞工厂的系统策略 摘要 黄酮类化合物是一类重要的天然多酚化合物&#xff0c;具有…

240922-MacOS终端访问硬盘

A. 最终效果 B. 操作步骤 在macOS中&#xff0c;可以通过命令行使用Terminal访问硬盘的不同位置。你可以按照以下步骤操作&#xff1a; 打开终端&#xff08;Terminal&#xff09;&#xff1a; 在应用程序中打开终端&#xff0c;或者使用 Spotlight 搜索“Terminal”来启动。 …

EnvironmentError: [Errno 28] No space left on device - 完美解决方法

&#x1f6a8;EnvironmentError: [Errno 28] No space left on device - 完美解决方法&#x1f4a1; &#x1f6a8;EnvironmentError: [Errno 28] No space left on device - 完美解决方法&#x1f4a1;摘要引言正文1. 错误解析&#xff1a;为什么会出现“No space left on dev…

线程池执行流程以及拒绝策略小结

线程池是一个用来创建、管理线程的工具&#xff0c;线程池内部维护了若干个线程&#xff0c;没有任务的时候&#xff0c;这些线程都处于等待空闲状态。如果有新的线程任务&#xff0c;就分配一个空闲线程执行。如果所有线程都处于忙碌状态&#xff0c;线程池会创建一个新线程进…

Linux 5.0在start_kernel之前做了什么事?(以aarch64为例)

目录 引言汇编启动&#xff01;&#xff01;&#xff01;细节剖析 引言 之前在研究Linux内核源码的时候总是找不到关于这部分源码的相关剖析&#xff0c;要么也是模棱两可的&#xff0c;也有一些比较专业的代码分析&#xff0c;不过比较分散&#xff0c;感觉大家都不太喜欢这部…

云计算第四阶段---CLOUD Day7---Day8

CLOUD 07 一、Dockerfile详细解析 指令说明FROM指定基础镜像&#xff08;唯一&#xff09;RUN在容器内执行命令&#xff0c;可以写多条ADD把文件拷贝到容器内&#xff0c;如果文件是 tar.xx 格式&#xff0c;会自动解压COPY把文件拷贝到容器内&#xff0c;不会自动解压ENV设置…

【Godot4.3】点数据简易表示法和Points2D

概述 在构造多点路径时我们会用到PackedVector2Array&#xff0c;并使用Vector2()来构造点。在手动创建多点数据时&#xff0c;这种写法其实很难看&#xff0c;有大量重复的Vector2()&#xff0c;比如下面这样&#xff1a; var points [Vector2(100,100),Vector2(200,200),V…

项目扩展二:消息拉取功能的实现

项目扩展二&#xff1a;消息拉取功能的实现 一、回顾一下消息推送功能是如何实现的二、设计消息拉取功能1.服务器如何处理2.定义Request和Response1.定义Request2.proto文件 三、服务器实现消息拉取1.业务模块的实现&#xff1a;信道模块2.消费者管理模块实现O(1)获取消费者1.目…

C++迭代器 iterator详解

目录 什么是迭代器 迭代器的类型 迭代器的用法 三种迭代器 范围for 什么是迭代器 它提供了一种访问容器&#xff08;如列表、集合等&#xff09;中元素的方法&#xff0c;而无需暴露容器的内部表示。迭代器使得程序员能够以统一的方式遍历不同的数据结构&#xff0c;而无需…

JVM的基本概念

目录 一、JVM的内存划分 二、JVM的类加载过程 三、JVM的垃圾回收机制&#xff08;GC&#xff09; 四、分代回收 一、JVM的内存划分 一个运行起来的Java进程&#xff0c;就是一个Java虚拟机&#xff0c;就需要从操作系统中申请一大块内存。申请的内存会划分为不同的区域&…

5.工欲善其事,必先利其器!收集金融数据你必须先做这个!

在正式从网络上获取数据并存储到我们的数据库之前&#xff0c;我们还需要做一些准备工作。其中最重要的无疑是把Python环境配置好。 你可以不好好学习Python&#xff0c;毕竟我后边会一步步教大家&#xff0c;也会提供现成的Python脚本。但是你必须得在你的电脑上把Python安装…

基于51单片机无线蓝牙智能家居控制系统设计

文章目录 前言资料获取设计介绍功能介绍设计程序具体实现截图![请添加图片描述](https://i-blog.csdnimg.cn/direct/c25dac9c3044416385d22a655dee5c3d.jpeg)设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff…

LLM安全风险及应对

LLM安全风险主要从四个维度分析&#xff1a;用户输入、训练数据、模型本身以及工具和插件。 风险类别具体风险风险解释应对措施具体举例用户输入相关风险提示注入&#xff08;Prompt Injection&#xff09;攻击者通过设计特定输入&#xff0c;使模型生成恶意或不安全的输出。- …

FLStudio21Mac版flstudio v21.2.1.3430简体中文版下载(含Win/Mac)

给大家介绍了许多FL21版本&#xff0c;今天给大家介绍一款FL Studio21Mac版本&#xff0c;如果是Mac电脑的朋友请千万不要错过&#xff0c;当然我也不会忽略掉Win系统的FL&#xff0c;链接我会放在文章&#xff0c;供大家下载与分享&#xff0c;如果有其他问题&#xff0c;欢迎…

【成神之路】Ambari实战-011-代码生命周期-metainfo加载原理深度剖析

在 Ambari 中&#xff0c;metainfo.xml 是定义服务和组件的关键配置文件。Ambari 通过解析它来加载和管理服务的整个生命周期。今天&#xff0c;我们将深入探索 metainfo.xml 是如何被解析的&#xff0c;并以 Redis 集群服务为例&#xff0c;逐步解读 Ambari 的处理过程。&…

cv中每个patch的关联

在计算机视觉任务中&#xff0c;当图像被划分为多个小块&#xff08;patches&#xff09;时&#xff0c;每个 patch 的关联性可以通过不同的方法来计算。具体取决于使用的模型和任务&#xff0c;以下是一些常见的计算 patch 关联性的方法&#xff1a; 1. Vision Transformer (…

Java : 图书管理系统

图书管理系统的作用&#xff1a; 高效的图书管理 图书管理系统通过自动化管理&#xff0c;实现了图书的采编、编目、流通管理等操作的自动化处理&#xff0c;大大提高了图书管理的效率和准确性。 工作人员可以通过系统快速查找图书信息&#xff0c;实时掌握图书的借还情况&…

【comfyUI工作流】一键生成专属欧美漫画!

现在你不需要在webui上手动设置一堆的参数 来将自己的照片转绘成欧美漫画插画 可以通过我制作的工作流一键完成转绘&#xff0c;更加效率便捷&#xff0c; 而且不需要你懂什么专业的AI绘画知识&#xff0c;会打开工作流&#xff0c;上传图片就可以 工作流特点 真实照片一键…

程序员的AI时代:拥抱变革,塑造未来

你们有没有想过&#xff0c;如果有一天&#xff0c;你的编程工作被一个AI助手取代了&#xff0c;你会怎么办&#xff1f;这不是危言耸听&#xff0c;随着AIGC技术的飞速发展&#xff0c;这样的场景可能真的会出现。但是&#xff0c;别担心&#xff0c;今天我们就来聊聊&#xf…