面向对象编程:从创建类到封装与构造方法的探索

在这里插入图片描述

1. 代码如何创建类?

在面向对象编程中,类是对一类事物的抽象,包含了静态的属性(成员变量)和动态的行为(成员方法)。在Java中,创建类的格式如下:

修饰词 class 类名 {// 属性信息// 行为信息
}public class Student {// 属性信息String name;int age;String gender;// 行为信息(方法)public void eat() {System.out.println("eat()......");}public void sleep() {System.out.println("sleep()......");}
}

2. 使用类创建对象

在创建类后,我们可以使用该类来创建对象,通过对象来访问类中的成员。创建对象的语法如下:

类名 引用名称 = new 类名([参数]);

3. 通过对象访问类中的成员

通过对象,我们可以访问类中的属性和方法。访问属性需要使用点操作符(.),并可以对属性进行赋值。访问方法同样使用点操作符,但需要加上括号。

// 访问属性并对其赋值
Student student = new Student();
student.name = "张三";
student.age = 18;// 访问方法
student.eat();
student.sleep();

4. 封装

在面向对象编程中,封装是一种重要的概念。它通过将类的成员变量设为私有(private),并提供公有的get/set方法来实现。这样可以隐藏属性的具体实现,同时暴露出属性的操作接口,使得类的使用更加灵活和安全。

public class Person {private String name;private String cardId;private String tel;private int money;public String getName() {return name;}public void setName(String str) {name = str;}
}

5. this关键字

在类的方法中,使用this关键字可以区分成员变量和局部变量。成员变量位于类的里面、方法的外面,而局部变量位于方法的里面。this.成员变量用于表示成员变量,帮助我们清晰地识别使用的是哪一个变量。

6. 构造方法

构造方法是创建对象的同时进行初始化的特殊方法。它的格式为:

public 类名() {}

Java默认提供无参构造方法,如果显示定义了构造方法,则不再提供默认的无参构造方法。有参构造方法和无参构造方法可以根据需要进行灵活添加,有参构造方法通常用于确定属性信息值,而无参构造方法则不确定属性信息值。

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

7. 类中的信息

一个标准的Java类需要包含成员变量、构造方法、get/set方法和其他业务方法。成员变量需要私有化,并通过get/set方法进行访问。至少需要提供两个构造方法:无参构造方法和全参构造方法,以适应不同的需求。同时,根据业务需要可以灵活添加其他方法。

通过学习这些面向对象编程的基本概念,你可以更好地理解Java编程的核心思想。希望这篇文章能够帮助你在编程的道路上越走越远,不断提升自己的编程技能!

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

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

相关文章

办公楼管理高手:一起来学烟雾监测实用技能!

在现代社会中,安全意识和防患意识越来越受到重视。特别是在大型办公楼等人员密集的场所,火灾的风险不容忽视。 为了保障员工和资产的安全,烟感监控成为一项至关重要的安全措施。烟感监控系统作为火灾预警的关键组成部分,能够及早发…

ardupilot 悬停油门学习

目录 文章目录 目录摘要1.悬停油门更新2.如何开启悬停油门学习3.日志记录悬停油门的变化摘要 本节主要记录ardupilot的悬停油门相关知识,正常悬停油门更新:没有解锁和着地不更新,手动模式或者漂移模式不更新,垂直方向有期望速度不更新,只有油门大于最低值,垂直运动速度小…

大数据Flink(四十九):框架版本介绍和编程语言选择

文章目录 框架版本介绍和编程语言选择 一、框架版本介绍 二、编程语言选择 框架版本介绍和编程语言选择

pandas学习

(个人学习使用) 添加索引 # index是行索引,columns是列索引 pd.DataFrame(score, indexidx, columnscol) 常用属性和方法 data.shape # 形状 data.index # 行索引 data.columns # 列索引 data.values # 里面的值,结果是ndarray类型数组 …

uniapp 的input组件在@input事件中限制用户可输入数值的范围,出现视图不更新的bug。

在input事件拿到用户输入的值,然后给input组件绑定的值赋值之前,判断用户输入的不能超过最大值,超过的话默认为100,,这个判断和赋值然后视图更新只能触发一次,之后在输入,发现值改了页面但是不更…

关于网络通信安全协议的一些知识(ssl,tls,CA,https)

首先了解一下http协议的变迁。 http1.0默认短连接,1.1默认长连接并且可以管道传输,但是存在队头阻塞问题; https就是在tcp和http之间加了SSL/TLS层。 http2也是安全的,改进是hpack二进制和编码压缩减小体积,stream没有…

微信存储空间清理

1、打开电脑版微信、点击左下角的三根横线 2、点击左侧的“设置” 3、弹出层左侧点击“文件管理” 4、点击右下角“打开文件夹” 5、默认4打开的为当前登录账户对应的文件夹(建议清理路径步骤7) 6、点击“WeChat Files”查看其他账户的文件夹&#xff0c…

智能制造RFID设备包括哪些?

智能制造是现代制造业的重要发展方向,其核心是数字化、网络化和智能化。而在智能制造中,RFID设备是一种不可或缺的技术手段,主要用于实现物品的识别、追踪和化管理。以下是智能制造中常用的RFID设备及其功能: 1、 RFID读写器 RFID…

SpringBoot整合Druid

SpringBoot整合Druid POM.xml <!-- 整合Druid --> <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version> </dependency> <!--自启动Druid管理后台--> <depe…

[JAVAee]synchronized关键字

目录 1.synchronized的特性 ①互斥性 ②可重入性 2.synchronized的使用示例 ①修饰普通方法 ②修饰静态方法 ③修饰代码块 1.synchronized的特性 ①互斥性 互斥性,就像是给门上锁了一样. 当A线程使用了被synchronized修饰的代码块并对其上锁,其他线程(B线程,C线程)想要使…

Hadoop 之 Centos 7 搭建 Zookeeper 3.8.2 集群(六)

Zookeeper 集群搭建 一.Centos 虚拟机配置1.新建虚拟机&#xff0c;选择【典型】2.下一步&#xff0c;【稍后安装操作系统】3.下一步&#xff0c;选择【Linux】【Centos7 64位】4.下一步&#xff0c;设置虚拟机名称和安装目录5.下一步&#xff0c;默认6.下一步&#xff0c;【自…

计算机系统结构-多处理机

概念&#xff0c;多处理机指的是&#xff0c;多台含cpu的机器共享一个存储器。 &#xff08;可以通过网络宽带&#xff0c;也可以通过线直连这个存储器。当然他们也可以有自己的私有存储器或者高速缓存&#xff09; 几个cpu公用一个总线&#xff0c;没问题。但是如果十几个cpu…

elasticsearch查询操作(API方式)

说明&#xff1a;elasticsearch查询操作除了使用DSL语句的方式&#xff08;参考&#xff1a;http://t.csdn.cn/k7IGL&#xff09;&#xff0c;也可以使用API的方式。 准备 使用前需先导入依赖 <!--RestHighLevelClient依赖--><dependency><groupId>org.ela…

pytest中生成allure报告时,测试报告中统计的用例数不正确

【问题描述】&#xff1a;pytest中生成allure报告时&#xff0c;测试报告中统计的用例数不正确&#xff0c;用例数总是比实际用例数多 【问题定位】&#xff1a;因为生成index.html的allure报告&#xff0c;是根据临时的json文件生成的。每次运行时&#xff0c;没有删除旧的js…

php使用chatGPT生成一些东西做一个记录

好久没写了&#xff0c;这么长时间都去坐一些自己感兴趣的事情去了。 之前使用chatgpt-3,效果一直不咋好&#xff0c;这里我们来说说各个版本区别 gpt-3收费成本可以接受&#xff0c;生成的内容对话有点不太聪明的样子 git-3.5-turbo收费相对来说低&#xff0c;生成文本质量…

PCB封装设计指导(十四)保存并产生device文件

PCB封装设计指导(十四)保存并产生PSM和device文件 封装命名完成之后,基本上封装的建立也接近结束,如果调网表使用的是第三方网表,还需要device文件才能调入。 但是PSM文件是不管第一方和第三方网表都是需要的,下面介绍如何产生这两个文件。 打开封装文件,如下图点击Fil…

openlayers系列:加载arcgis和geoserver在线离线切片

https://www.freesion.com/article/1751396517/ 1.背景 有个项目需要使用openlayer加载各种服务上发布的数据&#xff0c;坐标系也不同&#xff0c;我们都知道openalyer默认可以加载EPAG:3857,要加载4490的坐标系的数据需要重新定义一下&#xff0c;之后再加载。一想起要重新…

SpringBoot Demo工程搭建

SpringBoot Demo工程搭建 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://ma…

【C#】并行编程实战:使用 Visual Studio 调试任务

并行编程可以提高应用程序的性能&#xff0c;但是调试起来会更困难&#xff0c;这一点在之前的章节中我们已经有了很直观的感受。对于程序而言&#xff0c;保证程序的正确性和保证性能同样重要。 本章将介绍可以在 Visual Studio 中的调试工具&#xff08;包括 Thread 窗口、Ta…

Vue中TodoList案例_编辑

nextTick: MyItem.vue 加一个编辑按钮&#xff0c;input框&#xff1a;blur失去焦点时触发事件handleBlur&#xff0c;ref获取真实dom&#xff1a; <inputtype"text"v-show"todo.isEdit":value"todo.title"blur"handleBlur(todo,$even…