JAVA面向对象的四大特征是什么?

目录

1. 封装(Encapsulation)

特点:

代码示例:

解释:

2. 继承(Inheritance)

特点:

代码示例:

解释:

3. 多态(Polymorphism)

特点:

代码示例:

解释:

4. 抽象(Abstraction)

特点:

代码示例:

解释:

总结:


Java 面向对象编程(OOP)的四大特征是 封装(Encapsulation)继承(Inheritance)多态(Polymorphism)抽象(Abstraction)。这些特征是面向对象编程的核心,帮助开发者构建灵活且可扩展的系统。

1. 封装(Encapsulation)

封装是将对象的状态(属性)和行为(方法)组合在一起,并隐藏对象的内部实现细节,只允许通过公共的接口(getter 和 setter 方法等)来访问这些属性。这种做法增强了数据的安全性和代码的可维护性。

特点:
  • 通过使用 private 修饰符隐藏类的属性,只允许通过 public 方法访问。
  • 用户不需要了解对象内部的具体实现,只需要知道如何与对象交互即可。
代码示例:
public class Person {// 私有属性private String name;private int age;// 提供公共方法访问私有属性public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {if (age > 0) {this.age = age;} else {System.out.println("年龄必须为正数!");}}
}
解释:

通过 private 关键字将 nameage 属性封装起来,只有通过 getName()setName() 等公共方法才能访问和修改这些属性,确保数据安全。


2. 继承(Inheritance)

继承是面向对象编程中允许一个类(子类)从另一个类(父类)继承属性和方法的机制。通过继承,子类可以复用父类的代码,并且可以扩展或修改父类的行为。

特点:
  • 使用 extends 关键字实现类的继承。
  • 子类可以重用父类的属性和方法,也可以增加新的属性和方法。
  • 子类可以通过 方法重写(Override) 修改父类的行为。
代码示例:
// 父类
public class Animal {public void makeSound() {System.out.println("动物发出声音");}
}// 子类继承自 Animal 类
public class Dog extends Animal {// 子类可以重写父类的方法@Overridepublic void makeSound() {System.out.println("狗叫:汪汪");}
}
解释:

Dog 类继承了 Animal 类,重写了 makeSound() 方法,实现了狗发出自己的声音。同时,Dog 类还可以使用 Animal 类中的其他属性和方法。


3. 多态(Polymorphism)

多态是指同一个方法在不同对象上有不同的表现形式。多态可以通过 方法重载(Overloading)方法重写(Overriding) 来实现。多态让程序在执行时能够根据对象的实际类型来调用对应的方法,实现灵活性和可扩展性。

特点:
  • 编译时多态(静态绑定):通过方法重载实现,编译时确定调用哪个方法。
  • 运行时多态(动态绑定):通过方法重写实现,运行时根据对象的实际类型决定调用哪个方法。
代码示例:
// 父类
public class Animal {public void makeSound() {System.out.println("动物发出声音");}
}// 子类
public class Dog extends Animal {@Overridepublic void makeSound() {System.out.println("狗叫:汪汪");}
}// 子类
public class Cat extends Animal {@Overridepublic void makeSound() {System.out.println("猫叫:喵喵");}
}public class TestPolymorphism {public static void main(String[] args) {Animal myDog = new Dog(); // 动态绑定Animal myCat = new Cat(); // 动态绑定myDog.makeSound();  // 输出:狗叫:汪汪myCat.makeSound();  // 输出:猫叫:喵喵}
}
解释:

在这个例子中,Animal 是父类,而 DogCat 是子类。即使 myDogmyCat 的引用类型是 Animal,但在运行时,它们根据实际的对象类型调用了对应的 makeSound() 方法,这就是多态的体现。


4. 抽象(Abstraction)

抽象是指将对象的复杂实现细节隐藏起来,只向外界暴露必要的接口。这可以通过 抽象类接口 来实现。抽象类是不能实例化的类,通常包含一个或多个抽象方法,这些方法必须由子类实现。

特点:
  • 使用 abstract 关键字定义抽象类和抽象方法。
  • 抽象类不能实例化,只能被继承。
  • 子类必须实现所有抽象方法。
代码示例:
// 抽象类
public abstract class Animal {// 抽象方法,没有方法体,子类必须实现public abstract void makeSound();// 普通方法public void sleep() {System.out.println("动物在睡觉");}
}// 子类必须实现抽象方法
public class Dog extends Animal {@Overridepublic void makeSound() {System.out.println("狗叫:汪汪");}
}
解释:

Animal 是一个抽象类,包含一个抽象方法 makeSound()Dog 类继承自 Animal,必须实现 makeSound() 方法。抽象类隐藏了部分实现细节,强调了不同类的共同行为。


总结:

Java 面向对象编程的四大特征分别是:

  1. 封装:隐藏内部实现,提供统一接口。
  2. 继承:子类复用父类代码,扩展功能。
  3. 多态:同一个方法在不同对象上表现不同。
  4. 抽象:通过抽象类或接口隐藏实现细节,强调共同行为。

这四大特征是构建灵活、可扩展和易维护应用程序的基础。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

区块链技术与农产品溯源:实现透明供应链的关键

引言 随着食品安全问题和消费者对产品质量要求的提升,农产品溯源变得越来越重要。消费者希望知道他们购买的农产品从何而来,经历了哪些过程以及是否符合安全标准。区块链技术因其去中心化、不可篡改和透明的特点,成为实现农产品溯源的理想选…

如何解决与kernel32.dll相关的常见错误:详细指南解析kernel32.dll文件缺失、损坏或错误加载问题

当你的电脑中出现错误kernel32.dll丢失的问题,会导致电脑不能出现正常运行,希望能够有效的帮助你有效的将丢失的kernel32.dll文件进行修复同时也给大家介绍一些关于kernel32.dll文件的相关介绍,希望能够有效的帮助你快速修复错误。 kernel32.…

TensorFlow 的核心概念

TensorFlow 是一个开源的机器学习框架,由 Google 开发和维护。它提供了一个强大的工具集,用于构建和训练各种机器学习模型。 TensorFlow 的核心概念是计算图(Computational Graph)。计算图由节点(Nodes)和…

QT 鼠标和键盘事件

在Qt中,可以使用事件处理机制来监听和处理鼠标事件和键盘事件。具体来说,重载事件处理函数或者使用事件过滤器是最常见的方法。以下是一些常用的事件处理函数以及如何监听鼠标事件和键盘事件的示例。 1. 处理鼠标事件 要处理鼠标事件,可以重…

ES6基础知识

一、定义变量的关键字let和const 1. let 定义变量的语法: let 变量名 值; 2. 和var定义变量的区别 1. 是否支持同一个作用域变量同名 var支持,let不支持 2. 是否支持预解析 var支持,let不支持 3. 是否会挂载在window对象…

Unity RPG梦幻场景素材(附下载链接)

Unity RPG梦幻场景素材 点击下载资源 效果图: 资源链接

OpeneBayes 教程上新 | 打败 GPT-4V?超强开源多模态大模型 LLaVA-OneVision 正式上线!

大语言模型(Large Language Model,简称 LLM)与多模态大模型(Large Multimodal Model,简称 LMM)是人工智能领域的两个核心发展方向。 LLM 主要致力于处理和生成文本数据,而 LMM 则更进一步&#…

Git-本地项目同步到远程仓库

一、Git初始化项目 git initgit init 是 Git 中用于初始化一个新仓库的命令,通常用来在现有目录中创建一个 Git 仓库或重新初始化一个现有的 Git 仓库。通过 git init,你可以将一个普通的目录转变为 Git 受控的项目目录。 在当前目录中初始化一个新的 …

CesiumLab介绍

软考鸭小程序 学软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 CesiumLab是一个围绕Cesium平台设计的完整易用的数据预处理工具集,它旨在最大化提升三维数据可视化效率。本文将详细介绍CesiumLab的安装、主要功能…

【JavaSE】图书系统

目录 当我们学习完Java的语法后,可以写一个简单的项目进行总结梳理一下,这个项目也会用到我们所学过的Java所有的语法知识:目录是咱们用文件夹包装起来的类。 1.book 在面向对象体系中,提出了一个软件包的概念,即&am…

electron-vite_6js-cookie失效

我们项目是用了js-cookie,后续集成的时候发现,无法进入首页;经过排查是js-cookie无法使用,可能是electron打包后的项目运行的时候是file:/// 猜测原因:因为Cookie是与域名相关联的,而file:///协议没有域名&…

k8s微服务

一 、什么是微服务 用控制器来完成集群的工作负载,那么应用如何暴漏出去?需要通过微服务暴漏出去后才能被访问 Service是一组提供相同服务的Pod对外开放的接口。 借助Service,应用可以实现服务发现和负载均衡。 service默认只支持4层负载均…

斯坦福大学提出电影剧本可视化工具ScriptViz:能够根据剧本中的文本和对话自动检索相关的电影画面,帮助剧作家更好地构思和调整剧情

title:斯坦福大学提出电影剧本可视化工具ScriptViz:能够根据剧本中的文本和对话自动检索相关的电影画面,帮助剧作家更好地构思和调整剧情 斯坦福大学的研究者们开发了一个电影剧本可视化工具ScriptViz工具,ScriptViz的工作原理可以简单地理解…

基于java SpringBoot和Vue校园食堂网站管理系统设计

摘要 本文旨在探讨一种基于Java Spring Boot和Vue框架的校园食堂网站管理系统的设计。首先,介绍了系统开发的背景及意义,即为了提高校园食堂的管理效率和改善学生的就餐体验。接着,详细阐述了系统的技术选型,包括后端采用Spring …

vue+ElementUI—实现基础后台管理布局(sideBar+header+appMain)(附源码)

后台管理的模板很多,vue本身就提供了完整的vue-template-admin,vue-admin-beautiful等后台管理系统化框架,但是这些框架正是因为成体系而显得繁重。假如你想搭建一个静态的后台管理模板页面和几个单独的菜单页面,直接就上框架是否…

C#源码安装ZedGraph曲线显示组件

在软件开发里,数据的显示,已经是软件开发的大头。 如果让数据更加漂亮地、智能地显示,就是软件的核心价值了。 因为不管数据千万条,关键在于用户看到图。因为一个图表,就可以表示整个数据的趋势, 或者整个数据的走向,数据频度和密码。所以图表显示是软件的核心功能,比如…

2.1.ReactOS系统中中断描述符表进行初始化

2.1.ReactOS系统中中断描述符表进行初始化 2.1.ReactOS系统中中断描述符表进行初始化 文章目录 2.1.ReactOS系统中中断描述符表进行初始化 VOID INIT_FUNCTION NTAPI KeInitExceptions(VOID) {ULONG i;USHORT FlippedSelector;extern KIDTEN…

【计网】从零开始理解UDP协议 --- 理解端口号和UDP结构

我依旧敢和生活顶撞, 敢在逆境里撒野, 直面生活的污水, 永远乐意为新一轮的月亮和日落欢呼。 --- 央视文案 --- 从零开始理解UDP协议 1 再谈端口号2 理解UDP 报头结构3 UDP 的特点4 UDP 的缓冲区5 UDP 使用注意事项 1 再谈端口号 之前我…

自然语言处理问答系统

自然语言处理(NLP)问答系统是一种自动化系统,旨在接收自然语言查询并提供相应的答案。以下是对自然语言处理问答系统的详细描述,包括其架构、关键组件、实现方法、挑战与解决方案等。 1. 系统架构 自然语言处理问答系统通常由以…

Ubuntu 24.04 在 BPI-F3 上通过 SD 卡安装并从 NVME 运行

github 代码: https://github.com/rcman/BPI-F3 Ubuntu 24.04 现在正在我的 BPI-F3 上运行。很快会为 YouTube 制作一个视频。 这应该适用于任何版本的 Linux,仅在 Ubuntu 24.04 上测试过 入门 下载 Bianbu映像并使用您最喜欢的工具将其映像到微型 SD 卡…