Java自定义类:打造属于自己的编程世界

news/2024/11/20 7:10:01/

🧑‍💻CSDN主页:夏志121的主页

📋专栏地址:Java核心技术专栏

目录

一、自定义类示例

二、隐式参数与显式参数

三、封装的优点


        自定义类是Java中最基本、也是最重要的组成部分之一,使用者可以根据需求创建自己的数据类型,从而更加高效地构建程序。

一、自定义类示例

        首先,我们来了解一下什么是自定义类。在Java中,类是一种模板或蓝图,可以用来生成具有一定属性和行为的对象。不同于预定义好的类(例如String、Integer等),自定义类是由程序员按需求自行进行定义和实现。自定义类具有高度可定制性、可重用性以及可维护性。这样就可以有效地提高编程效率,同时减少代码冗余,便于管理

接下来是一个简单的Java自定义类示例:

public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } 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; } public void displayStudentInfo() {System.out.println("姓名:" + this.name + ",年龄:" + this.age);} 
}

        在上述示例中,定义了一个名为Student的类,并包含了两个私有变量:name(姓名)和age(年龄)。使用构造函数来初始化对象的属性,可以看到,我们使用了this关键字代表当前对象,以保证赋值操作的正确性。除此之外,该类还定义了四个公共方法用于获取或设置对象的属性。

当我们实例化一个Student对象时,就可以使用该对象的公共方法对属性进行操作:

Student s = new Student("Tom", 18); // 实例化对象
System.out.println(s.getName());   // 获取对象的姓名属性
s.setAge(19);                       // 设置对象的年龄属性
s.displayStudentInfo();             // 输出所有属性

二、隐式参数与显式参数

方法会操作对象并访问它们的实例字段。例如,以下方法:

public void raiseSalary(double dyPercent){double raise = salary * byPercent / 100;salary += raise;
}

将调用这个方法的对象的salary实例字段设置为一个新值。考虑下面这个调用:

number007.raiseSalary(5);

其作用是将number007.salary字段的值增加5%,具体地说,这个调用将执行以下指令:

double raise = number007.salary * byPercent / 100;
number007.salary += raise;

        raiseSalary方法有两个参数。第一个参数称为隐式(implicit)参数,是出现在方法名前的Employee类型的对象。第二个参数是位于方法名后面括号中的数值,这是一个显式(explicit)参数

在每个方法中,关键字this指示隐式参数。如果愿意,可以改写raiseSalary方法:

public void raiseSalary(double dyPercent){double raise = this.salary * byPercent / 100;this.salary += raise;
}

这样可以将实例字段与局部变量明显的区分开来。

三、封装的优点

在面向对象编程中,封装性是一种将数据和代码保护起来的机制,具有许多优点。

1、隐藏内部实现

        封装允许类隐藏其内部实现细节,仅向外部暴露必要接口。这样的好处在于,可以使对象更易于使用也更加安全,降低了程序员对类实现的繁琐程度,并且可以防止用户错误地操作对象并导致程序崩溃。

2、简化复杂性

        在面向对象编程中,一个复杂的系统往往由多个类组成,通过封装可以使系统垂直划分,即将系统的各个部分分别定义为相互独立的类。当对象分离时,系统变得更容易理解,因为每个对象都可以被设计成负责一项特定的任务,并提供公共接口简化调用过程。这种简化构造在理解、修改和测试程序时都非常有帮助。

3、提高代码的可重用性和可扩展性

        封装可以消除类内部实现与其他代码之间的依存性,从而增强了灵活性和可扩展性。封装的主要目标是最大限度地降低与其他代码部分发生联系的概率。这使得对象的行为可以独立于其他对象或整个程序的修改,从而增强了代码的可重用性和可维护性。如果要更改根据某个类创建的对象的任何属性或方法,仅需调整与该类相关的部分,使得编程变得更加高效也更有利于团队协作。

4、保护数据安全

        封装可以通过对数据进行访问控制来提供信息隐藏。这意味着对象只能用当前类和其后代类中定义的方式处理数据。当一个类允许修改其成员变量被外部程序直接处理时,非常容易出现潜在的数据不一致,导致代码出现bug。使用封装可以有效地保护数据,并且只通过更好设计的getter和setter方法来完成处理,防止用户做出对数据库影响不确定的操作。

        总之,封装是面向对象编程的重要特征之一,它的优点包括:隐藏内部实现、简化复杂性、提高代码的可重用性和可扩展性,以及保护数据安全。受益于封装机制,程序员们能够更加轻松地开发出更加健壮和可靠的代码,从而减少程序出现故障的可能性。


http://www.ppmy.cn/news/75723.html

相关文章

PCIe 载板设计资料原理图:382-基于FMC+的XCVU3P高性能 PCIe 载板

基于FMC的XCVU3P高性能 PCIe 载板 一、板卡概述 板卡主控芯片采用Xilinx UltraScale16 nm VU3P芯片(XCVU3P-2FFVC1517I)。板载 2 组 64bit 的DDR4 SDRAM,支持 IOX16或者 JTAG 口,支持PCIe X 16 ReV3.0以及 FMC 扩展接口。…

电动力学专题:天线指标

天线指标 谐振回路 天线是一个谐振回路 方向性 天线向一定方向辐射电磁波的能力。天线对不同方向传来的电波所具有的接收能力天线的水平方向图 一副天线在水平方向360度范围内的接受或发射能力的极坐标表示瓣:(类似瓣的结构)薄瓣宽度&…

C++的运算符与表达式

C的运算符与表达式 运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C内置了丰富的运算符,并且提供了以下类型的运算符: 算数运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符 表达式 在程序中,运算符是用来操作…

Object源码

介绍 Object对象是所有对象(包括数组)的超级父类,如果将对象比作一个人的话,Object对象就是所有人的唯一的祖先。所有的类的父类都是Object的直接子类或间接子类。如果一个类没有声明它的父类,那么他的父类默认为Object对象。 常用方法 re…

优惠券使用规则引擎来计算优惠 (drools)

电商的促销花样越来越多,规则也也越来越复杂,因此,规则的频繁变更可能会带来频繁的版本开发上线,因此,业务希望能够快速上线,这就要求产品能够做到不修改代码快速上线。 平心而论,优惠券目前的…

计网笔记 01 概述 计算机网络体系结构、参考模型

文章目录 前言1、计网概述1.1 概念、组成、功能、分类1.1.1 概念1.1.2 计网组成1.1.2 计网分类 1.2 标准化工作及相关组织1.2.1 标准的分类 1.3 性能指标★★★1.3.1 速率相关性能指标1.3.2 时延相关指标 2、体系结构&参考模型★★★★★(对应王道视频7-10p 相当…

Redis7实战加面试题-基础篇(Redis10大数据类型)

说明 刚看完尚硅谷Redis零基础到进阶,最强redis7教程,阳哥亲自带练(附redis面试题) 趁热打铁,根据脑图和视频,对视频中的知识点进行总结,方便以后复习 Redis入门概述 Remote Dictionary Serv…

不敢妄谈K12教育

做为大学生的父亲:不敢妄谈孩子教育 大约10年前,写了一本教育书稿 找到一个出版社的编辑,被训了一通 打消了出书以及K12教育的念想 趣讲大白话:娘生九子,各有不同 【趣讲信息科技171期】 ****************************…