面向对象基础(类、对象、封装、继承、多态)

面向对象基础(类、对象、封装、继承、多态)


文章目录

  • 面向对象基础(类、对象、封装、继承、多态)
  • 前言
  • 一、认识类和对象
  • 二、理解封装
  • 三、掌握继承
  • 四、初探多态
  • 总结


前言

Java作为一种广泛应用的编程语言,其面向对象编程(OOP)的特性是其强大和灵活性的重要基石。对于初学者来说,理解并掌握OOP的基本概念,如类、对象、封装、继承和多态,是迈向Java编程高手的必经之路。本文旨在用通俗易懂的语言,为Java小白们揭开OOP的神秘面纱,帮助大家轻松入门。


一、认识类和对象

  1. 类(Class):类是对象的模板或蓝图,它定义了对象的属性和方法。你可以将类看作是一种数据类型,它描述了具有相同属性和方法的对象的集合。
//定义一个简单的“学生”类
public class Student {  String name; // 属性:姓名  int age; // 属性:年龄  // 方法:自我介绍  void introduce() {  System.out.println("我叫" + name + ",今年" + age + "岁。");  }  
}
  1. 对象(Object):对象是类的实例,即根据类创建的具体实体。每个对象都具有类定义的属性和方法,并且可以有自己的状态(属性值)。
//创建“学生”类的对象
public class Main {  public static void main(String[] args) {  Student student1 = new Student(); // 创建学生对象  student1.name = "张三"; // 设置属性  student1.age = 20;  student1.introduce(); // 调用方法,输出:我叫张三,今年20岁。  }  
}

二、理解封装

封装是面向对象编程的四大基本特性之一,它指的是将数据(变量)和对数据的操作(方法)绑定在一起,作为一个独立的单元。封装的主要目的是隐藏对象的内部状态和实现细节,仅对外提供公共接口,从而保护数据不被随意修改,提高代码的安全性和可维护性。

//在“学生”类中添加封装属性的方法
public class Student {  private String name; // 私有属性,外部不能直接访问  private int age;  // 提供公共的getter和setter方法访问私有属性  public String getName() {  return name;  }  public void setName(String name) {  this.name = name;  }  public int getAge() {  return age;  }  public void setAge(int age) {  this.age = age;  }  // ...其他方法...  
}

三、掌握继承

继承是OOP中实现代码重用的重要手段。子类可以继承父类的属性和方法,从而避免重复编写相同的代码。子类可以拥有父类的所有属性和方法(除非它们是私有的),并且可以添加自己的属性和方法。

// 定义一个“大学生”类继承自“学生”类
public class CollegeStudent extends Student {  // 大学生特有的属性或方法  String major; // 专业  public void study() {  System.out.println("我正在学习" + major + "专业的课程。");  }  
}

四、初探多态

多态是OOP的又一重要特性,它允许我们使用父类类型的引用指向子类对象,并在运行时确定实际调用的方法。这使得代码更加灵活和可扩展。

//演示多态的使用
public class Main {  public static void main(String[] args) {  Student s1 = new Student(); // 普通学生对象  Student s2 = new CollegeStudent(); // 大学生对象,但引用类型为Student  s2.introduce(); // 调用Student类的introduce方法  if (s2 instanceof CollegeStudent) { // 判断s2是否真的是CollegeStudent类型  CollegeStudent cs = (CollegeStudent) s2; // 类型转换  cs.study(); // 调用CollegeStudent类的study方法  }  }  
}

总结

通过本文的学习,我们了解了Java面向对象编程的基本概念,包括类与对象的定义封装的实现继承的使用以及多态的初步认识。这些概念是构建复杂Java应用的基础,希望本文能够帮助初学者们更好地入门Java面向对象编程,并在后续的学习中不断提升自己的编程能力。记住,面向对象编程是一种思维方式,多实践、多思考,你会越来越得心应手!

其他相关的文章有:Java核心特性讲解面向对象基础详解

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

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

相关文章

1335:【例2-4】连通块

【算法分析】 设数组vis,vis[i][j]表示(i,j)位置已经访问过。遍历地图中的每个位置,尝试从每个位置开始进行搜索。如果该位置不是0且没有访问过,那么访问该位置,并尝试从其上下左右四个位置开始搜索。在看一个新的位置时&#xff…

mysql笔记:20. 什么是数据库六大范式

文章目录 简介什么是范式最常用的范式 第一范式 - 1NF第二范式 - 2NF第三范式 - 3NF第四范式 - 4NF第五范式 - 5NF巴斯-科德范式 - BCNF总结 简介 什么是范式 范式(Normal Form,简称NF)是数据库设计时遵循的一种规范,不同的规范…

大模型的实践应用19-基于pytorch框架下LayoutLM模型的搭建以及原理介绍

大家好,我是微学AI,今天给大家介绍一下大模型的实践应用19-基于pytorch框架下LayoutLM模型的搭建以及原理介绍。LayoutLM是一个基于 Transformer 的预训练模型,它专门为处理布局丰富的文档信息而设计,例如扫描的文档、PDF 文件等。这个模型由微软亚洲研究院的研究团队开发,…

医疗设备控费系统防止私收、漏收、人情费

加19339904493(康) 医院完成信息化建设,不仅是一次技术性人深过信息化技术,医院能够更好地管理病患信息,提高诊断的准确性和效率,同时优化医疗资源的配置,降低医疗成本。在信息化的推动下&#…

docker命令查询笔记

目录 loginsearchpushpullimagesrmitaghistorysaveloadrunstartrestartstopkillrmpauseunpausecreateexecpsinspectstatstoprenameattachupdatelogswaitportexportimport login login:登录到远程仓库 登录到远程仓库后可可以拉取仓库的镜像了 docker login [OPTIO…

Git概述及安装步骤

一、Git简介 Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。Git 易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion、CV…

Linux下的多线程编程:原理、工具及应用(1)

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:Flower of Life—陽花 0:34━━━━━━️💟──────── 4:46 🔄 ◀️ ⏸ ▶️ ☰ …

文献速递:深度学习乳腺癌诊断---使用深度学习改善乳腺癌组织学分级

Title 题目 Improved breast cancer histological grading using deep learning 使用深度学习改善乳腺癌组织学分级 01 文献速递介绍 乳腺癌组织学分级是乳腺癌中一个确立的临床变量,它包括来自三个方面的信息,即小管形成程度、核多态性和有丝分裂计…

springboot2.7使用redis的redission组件实现分布式锁

添加pom.xml引用&#xff1a; <!--redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!--redisson--><dependency><groupId…

IP证书有什么作用?怎么申请?

关于IP地址证书&#xff0c;它的主要作用有这么几个点&#xff1a; 1.验明正身&#xff1a;就像身份证一样&#xff0c;它可以证明某个服务器的IP地址是真的、合法的&#xff0c;让咱知道咱们连接的就是正确的服务器&#xff0c;而不是冒牌货。这样一来&#xff0c;就可以降低像…

【C++设计模式】策略模式

文章目录 前言一、策略模式是什么&#xff1f;二、策略模式的实现原理三、UML图四、代码实现总结 前言 策略模式是一种行为设计模式&#xff0c;它允许在运行时选择算法的行为。通过将每个算法封装到具有共同接口的独立类中&#xff0c;客户端可以在不改变自身代码的情况下选择…

Android 14.0 SystemUI设置系统导航栏默认为系统手势导航

1.概述 在14.0的原生系统rom产品定制化开发中,系统导航栏在10.0以后可以支持手势导航,但系统导航栏默认的是三键导航,Home Back Recent键三个键显示在底部 但是对于一些全屏的app 感觉操作起来不太方便,所以产品需要要求使用导航栏设置为系统手势导航这时系统底部就不会被…

Bugku MISC做题笔记

简单套娃DX 这一题需要对png图片的结构有所了解。详细可参考https://www.w3.org/TR/png/ 幸好每一张图片只有一个错误&#xff0c;逐步调试&#xff0c;就可以发现所有错误&#xff0c;修正即可。具体错误参看python程序中的注释&#xff1a; import ossrc_dir .\\XD\\ de…

Sklearn Lasso回归

以下是一个使用Sklearn库实现Lasso回归的简单代码示例。Lasso回归是一种用于回归分析的线性模型&#xff0c;它通过正则化项来强加稀疏性&#xff0c;从而可以估计系数的非零值&#xff0c;并使得某些系数变为零。 # 导入必要的库 from sklearn.linear_model import Lasso fro…

nicetool--替代hutool和fastjson的工具库

前言 如果你被hutool坑过、被fastjson坑过&#xff0c;nicetool帮你解脱&#xff01; 如果你想用稳定、Spring原生的工具类&#xff0c;nicetool已帮你封装&#xff01; nicetool不生产工具&#xff0c;只是JDK和Spring的封装侠&#xff01; 介绍 nicetool&#xff1a;超好…

微信每天通过好友上限是多少个呢?

微信每天通过好友上限是多少个呢&#xff1f; 1、新号和不活跃的号 微信新号是指注册不满15十五天&#xff0c;或者注册超过15天&#xff0c;但是没有好好养号的的账号。&#xff08;包括很多长期不活跃的账号&#xff0c;突然使用的情况&#xff09; 2、正常帐号 &#xf…

案例分析篇06:数据库设计相关28个考点(17~22)(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

Scala--01--简介、环境搭建

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1. Scala简介1.1 Scala是什么&#xff1f;官网&#xff1a; [https://scala-lang.org/](https://scala-lang.org/)官方文档&#xff1a; [https://docs.scala-lang.…

在Flutter中创建自定义的左对齐TabBar组件

在Flutter应用程序中&#xff0c;TabBar是一种常见的UI模式&#xff0c;用于在不同的标签页之间进行导航。然而&#xff0c;默认情况下&#xff0c;Flutter的TabBar在水平方向上是居中对齐的。本文将介绍如何创建一个自定义的左对齐TabBar组件&#xff0c;以满足特定的布局需求…

三、贪心算法

三、贪心算法 文章目录 三、贪心算法1、找零钱2、求一个数列的极差3、将真分数用埃及分数之和表示4、找到出现最多次数的数5、将给定的整数去掉任意个数字后重新组成最小整数 1、找零钱 #include <stdio.h> int a[7]{100,50,20,10,5,2,1},ns[7]; void main() {/********…