【从零开始学习JAVA | 第三篇】类与对象 和 封装

news2024/12/29 10:21:18

目录

前言: 

类与对象:

封装:

总结:


前言: 

从本篇开始,我们就要以面向对象编程思想来进行学习了,今天我们学习的内容是类与对象,这是JAVA中的重要知识,让我们一起来进行相关内容的学习吧。

类与对象:

  • 类是对象共同特征的描述。
  • 对象是真实存在的东西。

        Java中的类是一种自定义数据类型,可以用来描述对象的属性和行为。类是由属性和方法组成的,其中属性定义了对象的状态,而方法定义了对象的行为。我们把数据和行为组合在一个包里面,对对象的使用者隐藏具体的实现方式

        对象是类的实例,可以使用类的方法和属性以达到预期的功能。每个对象都有自己的状态,由属性的值决定。对象的行为可以通过调用其方法来触发。

        Java中类的定义一般包括类名、类的成员变量、类的成员方法。成员变量是类的属性,成员方法是类的行为。

类是构造对象的模板蓝图,我们可以认为类就是饼干模具,它并不能制造饼干,但是可以控制这个饼长什么样子,而对象就是我们创造出来的一个一个小饼干。

在Java中,必须先设计类,才能获得对象 。对于类与对象的关系,我们可以举一个现实生活中的例子:

我们如果想要清洁家里的地板(需求),我们就要想一个方法(寻找类),我们想到了使用扫地机器人(确定类),但想要使用扫地机器人,我们还要去买一个实际存在的扫地机器人(创建对象)

类的定义:

public class 类名{
    成员变量(代表属性,一般是名词)
    成员方法(代表行为,一般是动词)
    构造器
    代码块
    内部类  
}

注意事项:

  • 类名的首字母建议大写,需要见名知意
  • 一个java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码的文件名,为了代码结构清晰,我们还是推荐一个文件中只写一个class类。

类与类之间的关系:

  1. 继承关系:类与类之间的继承关系是指一个类继承了另一个类的属性和方法。被继承的类称为父类或超类,继承父类属性和方法的类称为子类或派生类。子类可以重写父类的方法或添加自己的方法和属性。Java中使用extends关键字表示继承关系。

  2. 实现关系:类与接口之间的关系是指一个类实现了一个或多个接口中定义的所有方法。实现接口的类必须实现接口中定义的所有方法。Java中使用implements关键字表示实现关系。

  3. 关联关系:类与类之间的关联关系是指一个类与另一个类有某种操作上的关联或依赖关系。关联关系包括聚合关系和组合关系。聚合关系是指两个类一起工作,但其中一个类可以离开另一个类而单独存在。组合关系是指两个类必须一起工作,其中一个类不能单独存在。Java中使用引用变量表示关联关系。

  4. 依赖关系:类与类之间的依赖关系是指一个类使用了另一个类的某些方法和属性,但不是必须依赖关系。例如,一个类的方法中调用了另一个类的方法,那么它们之间就有了依赖关系。Java中使用方法参数、局部变量或静态方法调用表示依赖关系。

封装:

Java中的封装(encapsulation)是指将类的实现细节隐藏起来,仅对外暴露必要的接口,从而实现了信息的隐藏和保护。

封装通过访问控制修饰符来实现,Java中有四种访问控制修饰符:public、protected、默认和private。

  • public修饰符表示公开,可以被类的内部、外部和子类访问;
  • protected修饰符表示保护,可以被类的内部和外部子类访问;默认修饰符表示包访问权限,仅限于同一包内的访问;
  • private修饰符表示私有,仅限于本类内部访问。

封装属于面向对象的三大特征,是一个很重要的性质。面向对象的三大特征分别是封装,继承,多态。

 封装的基本原则:
        对象代表什么,就得封装对应的数据,并提供数据对应的行为。

封装的优点:

1. 信息隐藏:封装可以隐藏类的内部状态和实现细节,只对外提供公共接口。这样可以防止代码被误修改或滥用,提高代码的安全性。

2. 降低耦合度:封装可以将类的内部状态和行为封装起来,使得类的内部改动不会影响到外部。这样可以降低各个模块之间的耦合度,提高代码的灵活性和可维护性。

3. 提高重用性:封装可以使类的内部实现细节被隐藏,抽象出基本的逻辑单元。这样便于将这些逻辑单元重复利用到不同的场合,提高代码的可复用性。

4. 简化调用:封装可以使得外部调用者只关注类对外的公共接口,而不需要了解类的内部实现细节。这样可以简化代码的编写和调用过程,提高代码的可读性和易用性。

综上所述,封装是Java面向对象编程的基本原则之一,合理使用封装可以提高代码的安全性、灵活性、可维护性和可复用性。

JAVA已经为我们封装好了大量的类可以直接调用,在实际项目中大大简化了我们的工作量,让编程更加高效。

实例:封装一个person类  

public class Person {
    // 成员变量
    private int age;
    private String name;

    // 构造方法
    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }

    // 成员方法
    public void sayHello() {
        System.out.println("Hello, my name is " + name + ". I'm " + age +" years old.");
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }
}

        延伸来讲,我们实际上可以通过控制接口来实现对于一个变量进行读写控制操作,例如我们在一个类中建立一个私有变量,而接口只提供赋值接口,我们不就实现了对这个遍历进行只写操作。只读只写操作都是这样以此类推。
 

总结

        类与对象是Java中面向对象的两个重要概念。类是一种抽象数据类型,用于描述具有相同属性和行为的对象集合,它是创建对象的模板。对象则是类的一个实例,具有自己的状态(属性)和行为(方法)。

        在Java中,封装是指使用访问控制符限制类内部的数据和方法的访问范围,从而保证程序的安全性和健壮性。封装可以隐藏类的内部细节,只对外暴露必要的接口,增强了对程序的保护性。

今天的内容到这里就结束了,感谢大家的阅读。

如果我的内容对你有帮助,请点赞,评论,收藏创作不易,大家的支持就是我坚持下去的动力!

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

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

相关文章

docker 项目部署 后端/前端

1.前端部署 2.后端部署 问题一:build出问题 ERROR: failed to solve: failed to compute cache key: failed to calculate checksum of ref 668a7264-5d0b-45a6-b547-fa8fff014bda::g00ukurq2ipxuvrrz8rnpyskp: "/swagger2-demo-0.0.1-SNAPSHOT.jar": …

next.js博客搭建_react-markdown渲染内容(第三步)

文章目录 ⭐前言⭐引入react-markdown💖 使用markdown渲染💖 文章内容布局💖 react-syntax-highlighter代码高亮 ⭐结束 ⭐前言 大家好,我是yma16,本期给大家分享next项目中使用react-markdown渲染内容。 该系列的往期…

考研C语言第八章

结构体定义&#xff0c;初始化&#xff0c;结构体数组 结构体对齐 这个东西看着像数据库里面属性的定义&#xff0c;也像java里面的类的定义 #include <stdio.h> #include <string.h> #include <stdlib.h>struct student{int num;char name[20];char sex;i…

chatgpt赋能python:Python桌面编程:探索图形用户界面

Python桌面编程&#xff1a;探索图形用户界面 Python是一种广受欢迎的高级编程语言&#xff0c;被广泛应用于数据科学、人工智能、Web开发和自动化。但是&#xff0c;随着越来越多的应用程序向图形用户界面&#xff08;GUI&#xff09;转移&#xff0c;Python的桌面编程能力也…

datagrip 连接 phoenix

jar替换完后尽量重启datagrip. 然后重新连接即可. 不重启貌似报错... 效果:

chatgpt赋能python:Python更新界面:让你的应用更美观、更易用

Python更新界面&#xff1a;让你的应用更美观、更易用 Python是一门强大的编程语言&#xff0c;广泛应用于软件开发、数据分析、机器学习等领域。其中&#xff0c;Python的GUI开发能力也非常出色。Python支持多种GUI库&#xff0c;如Tkinter、PyQt、wxPython等&#xff0c;可以…

【C++篇】C++新增的一些基础特性

友情链接&#xff1a;C/C系列系统学习目录 知识总结顺序参考C Primer Plus&#xff08;第六版&#xff09;和谭浩强老师的C程序设计&#xff08;第五版&#xff09;等&#xff0c;内容以书中为标准&#xff0c;同时参考其它各类书籍以及优质文章&#xff0c;以至减少知识点上的…

Python--字典

Python--字典 <font colorblue>一、创建字典<font colorblue>二、访问字典元素<font colorblue>三、字典的增、删、查、改<font colorblue>1、添加元素<font colorblue>2、删除元素<font colorblue>3、查找元素<font colorblue>4、修…

Git——分布式版本控制系统

简介 Git是一个开源的分布式版本控制系统&#xff0c;可以高效的处理从小到很大的项目版本管理。 分类 集中式 SVN&#xff0c;CVS 使用单一的服务器用来管理和存储所有文件的修订版本&#xff1b;协同开发的成员拉取或提交都需连接到这台服务器&#xff1b;如果服务器宕机…

电控开关详细介绍 MOSFET

目录 NMOS MOSFET的开关模型 现实生活中MOSFET的截面图 输出特性曲线 总结 MOSFET的SCS模型 MOSFET的SR模型 进一步分析 例子 PMOS CMOS(Complementary Metal-Oxide-Semiconductor) NMOS 金属氧化物半导体场效应晶体管 这是一个什么样的结构呢&#xff1f; 对于…

2023 年6月开发者调查统计结果——最流行的技术(2)

2023 年6月开发者调查统计结果——最流行的技术&#xff08;2&#xff09; 本文目录&#xff1a; 二十三、编程、脚本和标记语言 二十四、数据库 二十五、云平台 二十六、网络框架和技术 二十七、其他框架和库 二十八、其他工具 二十九、集成开发环境 三十、异步工具 …

chatgpt赋能python:Python查错完全指南:如何快速诊断和解决常见的错误

Python查错完全指南&#xff1a;如何快速诊断和解决常见的错误 Python是一种高级编程语言&#xff0c;它被广泛用于数据科学、机器学习、Web开发和自动化等领域。虽然Python具有易于学习和易于使用的特点&#xff0c;但是在编写复杂的应用程序时&#xff0c;错误和异常情况经常…

chatgpt赋能python:Python构造图入门指南

Python构造图入门指南 Python是一种非常强大的编程语言&#xff0c;它可以用于各种任务&#xff0c;包括数据分析、机器学习和深度学习等领域。其中&#xff0c;构造图是Python在数据分析领域的一项非常重要的技术&#xff0c;本文将为大家介绍Python构造图的入门指南。 什么…

chatgpt赋能python:Python查找手机号码

Python查找手机号码 在今天的数字时代&#xff0c;手机号码已成为每个人生活中必不可少的一部分。虽然我们可以轻松地拥有一部手机&#xff0c;但是对于那些需要通过电话来联系客户、朋友或家庭成员的人&#xff0c;获取正确的手机号码就显得尤为重要。 这就是为什么Python查…

【科普知识】如何解决CANopen通信一体化伺服电机PDO无法正常使用

随着现代的自动化程度不断提高&#xff0c;一体化电机的应用正逐渐成为行业的新趋势。 一体化伺服电机是现代工业自动化系统中常用的设备&#xff0c;它集成了伺服电机、驱动器和控制器等功能&#xff0c;提供了高效、精确的运动控制。在其系统中&#xff0c;我们通常使用PDO&a…

vue封装ketcher 化学式、分子式编辑器

ketcher是一个化学结构式编辑器&#xff08;github地址&#xff09;&#xff0c;ketcher插件提供了传统的html standalone版、npm包react版&#xff0c;并没有npm包vue版&#xff0c;集成到vue的原理是将standalone版嵌到iframe中&#xff0c;通过拿到iframe中的ketcher对象&am…

解决Armbian安装UFW防火墙后无法访问1Panel面板的问题:有效解决方案揭秘

文章目录 前言armbian安装防火墙原因分析解决方案第一步&#xff1a;查看1panel的面板入口端口第二步&#xff1a;打开指定端口的访问权限第三步&#xff1a;重启防火墙第四步骤&#xff1a;查看防火墙状态【可略】 前言 官方的教程很不错&#xff0c;但是还是有一些缺陷&…

第四章 ResNet网络详解

系列文章目录 第一章 AlexNet网络详解 第二章 VGG网络详解 第三章 GoogLeNet网络详解 第四章 ResNet网络详解 第五章 ResNeXt网络详解 第六章 MobileNetv1网络详解 第七章 MobileNetv2网络详解 第八章 MobileNetv3网络详解 第九章 ShuffleNetv1网络详解 第十章…

.net 软件开发模式——三层架构

三层架构是一种常用的软件开发架构模式&#xff0c;它将应用程序分为三个层次&#xff1a;表示层、业务逻辑层和数据访问层。每一层都有明确的职责和功能&#xff0c;分别负责用户交互、业务处理和数据存储等任务。这种架构模式的优点包括易于维护和扩展、更好的组织结构和代码…

Vue的详细安装教程,使用NVM安装是我所推荐的方式

第一步&#xff1a;卸载之前安装的node&#xff0c;安装NVM 进入网站&#xff1a;Releases coreybutler/nvm-windows GitHub 选择一个版本进行安装即可 安装的路径我就不用多说了&#xff0c;全英文路径&#xff0c;尽量不要安装在c盘上&#xff0c;计算机人都懂为什么&…