Java面向对象详解以及示例解析

Java面向对象详解


文章目录

  • Java面向对象详解


面向对象编程(Object-Oriented Programming,简称OOP)是一种计算机编程模型。其核心在于围绕数据或对象来组织软件设计,而非仅仅依赖于功能和逻辑。这种编程方式更专注于对象与对象之间的交互,对象涉及的方法和属性都被封装在对象内部。

面向对象编程依赖于两个核心概念:类和对象。类是对某一类事物的描述,是抽象的、概念上的意义;而对象是实际存在的、具体的事物个体。面向对象设计的过程就是抽象的过程,包括发现类、发现类的属性以及发现类的方法。

Java如何支持面向对象?主要是这几个方面:类和对象、封装、继承和多态

例子
假设我们正在开发一个简单的在线书店系统。在这个系统中,我们需要处理书籍和用户的相关操作。

首先,我们可以定义两个类:Book 和 User。这两个类分别代表书籍和用户这两个对象。

Book 类:

public class Book {  private String title;  private String author;  private double price;  // 构造方法  public Book(String title, String author, double price) {  this.title = title;  this.author = author;  this.price = price;  }  // Getter 和 Setter 方法  public String getTitle() {  return title;  }  public void setTitle(String title) {  this.title = title;  }  public String getAuthor() {  return author;  }  public void setAuthor(String author) {  this.author = author;  }  public double getPrice() {  return price;  }  public void setPrice(double price) {  this.price = price;  }  // 书籍的显示方法  public void displayDetails() {  System.out.println("Title: " + title);  System.out.println("Author: " + author);  System.out.println("Price: " + price);  }  
}

User 类:

public class User {  private String name;  private String email;  private double balance;  // 构造方法  public User(String name, String email, double balance) {  this.name = name;  this.email = email;  this.balance = balance;  }  // Getter 和 Setter 方法  // ... (省略了getter和setter方法,与Book类类似)  // 用户购买书籍的方法  public boolean purchaseBook(Book book) {  if (balance >= book.getPrice()) {  balance -= book.getPrice();  System.out.println(name + " purchased " + book.getTitle());  return true;  } else {  System.out.println(name + " does not have enough balance to purchase " + book.getTitle());  return false;  }  }  // 显示用户信息的方法  public void displayDetails() {  System.out.println("Name: " + name);  System.out.println("Email: " + email);  System.out.println("Balance: " + balance);  }  
}

现在,我们可以使用这两个类来创建对象并进行交互。例如:

public class Demo {  public static void main(String[] args) {  // 创建书籍对象  Book book = new Book("Java Programming", "John Doe", 39.99);  // 创建用户对象  User user = new User("Alice", "alice@example.com", 100.0);  // 显示书籍详情  book.displayDetails();  // 显示用户详情  user.displayDetails();  // 用户购买书籍  boolean purchaseSuccess = user.purchaseBook(book);  if (purchaseSuccess) {  System.out.println("Purchase successful!");  } else {  System.out.println("Purchase failed.");  }  // 再次显示用户详情以查看余额变化  user.displayDetails();  }  
}

在这个例子中,Book 和 User 类分别封装了书籍和用户的属性和行为。Book 类有标题、作者和价格等属性,以及显示书籍详情的方法。User 类有姓名、邮箱和余额等属性,以及购买书籍和显示用户详情的方法。

通过面向对象编程,我们可以将现实世界中的事物抽象为对象,并通过类和对象之间的交互来实现复杂的业务逻辑。这种编程方式使得代码更加模块化、可维护,并且提高了代码的重用性。在这个例子中,User 对象可以购买多本不同的 Book 对象,而每本 Book 对象都可以被多个 User 对象购买,这就是面向对象编程中多态性的一个体现。


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

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

相关文章

设计模式之依赖倒转原则

目录 1、 基本介绍 2、 应用实例 3、 依赖关系传递的三种方式 (1) 接口传递 (2) 构造方法传递 (3) setter方式传递 4、 注意事项和细节 1、 基本介绍 依赖倒转原则(Dependence Inversion Principle)是指: 高层模块不应该依赖低层模块,二者都应该依…

文字悬浮下划线动态效果

概览 此篇文章主要介绍文字悬浮下划线的动画效果&#xff0c;主要有从左往右和从中间至两边扩散两种动态效果 一. 从左往右 示例代码如下 <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content…

【C语言】C语言编程进阶:异常处理与程序稳定性全攻略

1. 概述 异常处理又称异常错误处理&#xff0c;它提供了处理程序运行时出现任何意外或异常情况的方法。异常处理通常是防止未知错误的发生所采取的处理措施&#xff0c;对于某一类型的错误&#xff0c;异常处理应该提供相应的处理方法。例如&#xff0c;在设计程序时&#xff…

AI智商排名:Claude-3首次突破100

用挪威门萨&#xff08;智商测试题&#xff09;中 35 个问题对chatGPT等人工智能进行了测试&#xff1a; ChatGPT 对ChatGPT进行了两次挪威门萨测试&#xff0c;在 35 个问题中&#xff0c;它平均答对了 13 个&#xff0c;智商估计为 85。 测试方法 每个人工智能都接受了两次…

<商务世界>《第5课 重组、托管是什么?》

1 托管 1.1 案例 2020年10月&#xff0c;国资委决定&#xff0c;由中国宝武钢铁集团有限公司对中国中钢集团有限公司进行托管&#xff0c;这就意味着中钢集团由一个副部级的央企管理了&#xff0c;虽然级别没有变动&#xff0c;但是他的好多决策都不用先汇报给国资委了&#…

MATLAB知识点:循环语句的经典练习题

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自​第4章&#xff1a;MATLAB程序流程控制 下面我们来看…

springmvc的使用方法及运行原理

Spring MVC 是 Spring 框架中用于开发 Web 应用程序的一部分&#xff0c;它基于 MVC&#xff08;Model-View-Controller&#xff09;设计模式&#xff0c;提供了一种灵活且强大的方式来构建 Web 应用。 运行原理&#xff1a; 客户端发送请求&#xff1a;浏览器向服务器发送 H…

贷齐乐错误的waf引起的SQL注入漏洞复现

君衍. 一、环境介绍1、第一道WAF2、第二道WAF 二、环境部署1、模拟源码2、连接数据库源码3、数据库创建4、测试 三、源码分析1、模拟WAF2、注入思路3、PHP下划线特性4、完成假设 四、联合查询注入1、测试回显字段2、爆出库名3、爆出表名4、爆出表下的列名4、爆出flag 一、环境介…

CleanMyMac X4.14.7永久免费Mac电脑清理和优化软件

CleanMyMac X 是一款功能强大的 Mac 清理和优化软件&#xff0c;适合以下几类人群使用&#xff1a; 需要定期清理和优化 Mac 的用户&#xff1a;随着时间的推移&#xff0c;Mac 设备上可能会积累大量的无用文件、缓存和垃圾&#xff0c;导致系统运行缓慢。CleanMyMac X 的智能扫…

【Java JVM】Class 文件

Java 的口号 “一次编写, 到处运行 (Write Once, Run Anywhere)” 的基础: JVM 和 所有平台都统一支持的程序存储格式 – 字节码 (Byte Code)。 只要在对应的平台安装对应的 JVM, 将我们编写的源码编译为 Class 文件, 就能达到了一次编写, 导出运行的目标, 中间的所有细节由不同…

形容passwd和shadow区别

/etc/passwd 存账户信息一般不存密码 /etc/shadow主要用来存密码 /etc/passwd默认是任意用户可读只有root用户可修改 /etc/shadow 默认只有root用户可读可写 /etc/passwd 包含系统用户和用户的主要信息 /etc/shadow 用于储存系统中用户的密码&#xff0c;又称为影子文件 /etc/g…

11.WEB渗透测试-Linux系统管理、安全加固(上)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;10.WEB渗透测试-Linux基础知识-Linux用户权限管理&#xff08;下&#xff09;-CSDN博客 进…

【论文笔记】Language Models are Few-Shot Learners

Language Models are Few-Shot Learners 本部分是 GPT-3 技术报告的第一部分&#xff1a;论文正文、部分附录。 后续还有第二部分&#xff1a;GPT-3 的广泛影响、剩下的附录。 以及第三部分&#xff08;自己感兴趣的&#xff09;&#xff1a;GPT-3 的数据集重叠性研究。 回顾…

部署运维 防火墙,进程 常用命令

防火墙: 1. 查看是否安装了firewalld sudo systemctl status firewalld 查看防火墙状态或者sudo systemctl is-active firewalld 查看防火墙是否是开启状态 2. 开放6379port sudo firewall-cmd --add-port6379/tcp --permanent 刷新防火墙 sudo firewall-cmd --reload 3…

ranger的使用

安装 macOS brew install rangerubuntu sudo apt-get install ranger配置 启动之后ranger会创建一个目录~/.config/ranger 可以使用以下命令复制默认配置文件到这个目录 ranger --copy-configallrc.conf-选项设置和快捷键commands.py-能通过:执行的命令commands_full.py-全套…

产品展示型wordpress外贸网站模板

孕婴产品wordpress外贸网站模板 吸奶器、待产包、孕妇枕头、护理垫、纸尿裤、孕妇装、孕婴产品wordpress外贸网站模板。 https://www.jianzhanpress.com/?p4112 床品毛巾wordpress独立站模板 床单、被套、毛巾、抱枕、靠垫、围巾、布艺、枕头、乳胶枕、四件套、浴巾wordpre…

职场中的团队合作与个人成长

在职场中&#xff0c;团队合作和个人成长是两个不可或缺的要素。一个优秀的团队可以带来更高的工作效率和更好的业绩&#xff0c;而个人的成长则是职场成功的关键。本文将探讨如何在职场中实现团队合作与个人成长的平衡。 一、团队合作的重要性 在职场中&#xff0c;团队合作是…

ARM GNU 汇编 “每日读书“

在GNU ARM汇编程序中&#xff0c;如果我们想定义一个浮点数&#xff0c;那么可以使用下面的伪操作来定义。 标签&#xff0c;命令 f: .float 3.14 .equ f,3.1415 我们可以使用.float 伪操作定义一个浮点数f, 并初始化为3.14 如果你想将这个浮点数重新赋值为3.1415&#xff0c;则…

【Ubuntu】将多个python文件打包为.so文件

1.为什么要将python打包为.so文件&#xff1f; 保护源码 2.实战例子 a.安装相应的包 pip install cython 验证安装是否成功 cython --version b.实战的文件目录和内容 hi.py # This is a sample Python script.# Press ShiftF10 to execute it or replace it with your…

线性代数 --- 特征值与特征向量

特征值与特征向量 已知任意向量x&#xff0c;现有矩阵A对x进行操作后&#xff0c;得到新的向量Ax。这就好比是自变量x与函数f(x)的关系一样&#xff0c;向量x通过类似“函数”的处理得到了一个新的向量Ax。这个新的向量可能和原向量x方向相同&#xff0c;也可能不同(事实上大多…