Java语法之封装

简介: 我们应该都知道Java面向对象的三大特性:封装,继承,多态,今天小编给大家分享封装这个概念以及使用,我们开始吧:

💭封装的概念


在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法,封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。


💭封装的使用


1.初识封装

首先来看一段代码:

classPerson {
publicStringname;
publicintage;
publicvoidshow() {
System.out.println(name+"的年龄是"+age);
    }
}
publicclassTest_1 {
publicstaticvoidmain(String[] args) {
Personperson=newPerson();
person.name="张三";
person.age=18;
person.show();
    }
}

这段代码中我们创建了一个Person类,并且创建了成员变量和方法,在主函数中new了一个对象,通过person引用去给成员变量赋值,并且代码正常运行,结果:

da23d032896e40edb95ad1eda85461db.png


猜想一下,我们将部分代码加以修改,如果我用private去修饰成员变量是否可以让代码正常运行呢???

classPerson {
privateStringname;
privateintage;
publicvoidshow() {
System.out.println(name+"的年龄是"+age);
    }
}

e86cb8a50da84b47bc5300de994530bf.png

我们可以看到,这里代码就会报错了, 原因是此时被peivate修饰的name和age只能在当前这个类(Person类)里面使用,在类外是没有权限访问的,这里也就是我们要说的封装!


2.封装的使用

那么我们如何给成员变量赋值呢???

这里我们通过构造方法可以解决,代码如下:

classPerson {
publicStringname;
publicintage;
publicvoidshow() {
System.out.println(name+"的年龄是"+age);
    }
publicPerson(Stringname, intage) {    //构造方法this.name=name;
this.age=age;
    }
}
publicclassTest_1 {
publicstaticvoidmain(String[] args) {
Personperson=newPerson("张三",18);
/*person.name = "张三";person.age = 18;person.show();*/person.show();
    }
}

当然我们可以使用set和get这样的公开方法去给成员赋值:

classPerson {
publicStringname;
publicintage;
publicvoidshow() {
System.out.println(name+"的年龄是"+age);
    }
/*public Person(String name, int age) {    //构造方法this.name = name;this.age = age;}*/publicStringgetName() {
returnthis.name;
    }
publicvoidsetName(Stringname) {
this.name=name;
    }
publicvoidsetAge(intage) {
this.age=age;
    }
}
publicclassTest_1 {
publicstaticvoidmain(String[] args) {
Personperson=newPerson();
/*person.name = "张三";person.age = 18;person.show();*/person.setName("李四");
person.setAge(18);
person.show();
    }
}


💭封装的好处


1. 良好的封装能够减少耦合。

2. 类内部的结构可以自由修改。

3. 可以对成员变量进行更精确的控制。

4. 隐藏信息,实现细节。


以上就是今天和大家分享的知识,如对上文有意见或者有错误,还请大佬们斧正,觉得有帮助的童鞋们,创作不易,蟹蟹三连!


目录
相关文章
|
2月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
124 1
|
2月前
|
存储 SQL NoSQL
Redis-常用语法以及java互联实践案例
本文详细介绍了Redis的数据结构、常用命令及其Java客户端的使用,涵盖String、Hash、List、Set、SortedSet等数据类型及操作,同时提供了Jedis和Spring Boot Data Redis的实战示例,帮助开发者快速掌握Redis在实际项目中的应用。
250 1
Redis-常用语法以及java互联实践案例
|
3月前
|
算法 Java 测试技术
零基础学 Java: 从语法入门到企业级项目实战的详细学习路线解析
本文为零基础学习者提供完整的Java学习路线,涵盖语法基础、面向对象编程、数据结构与算法、多线程、JVM原理、Spring框架、Spring Boot及项目实战,助你从入门到进阶,系统掌握Java编程技能,提升实战开发能力。
192 0
|
3月前
|
存储 Java 容器
Java基本语法详解
本文深入讲解了Java编程的基础语法,涵盖数据类型、运算符、控制结构及数组等核心内容,帮助初学者构建坚实的编程基础。
|
4月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
204 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
4月前
|
存储 安全 Java
从基础语法到实战应用的 Java 入门必备知识全解析
本文介绍了Java入门必备知识,涵盖开发环境搭建、基础语法、面向对象编程、集合框架、异常处理、多线程和IO流等内容,结合实例帮助新手快速掌握Java核心概念与应用技巧。
101 0
|
5月前
|
Java 数据库连接 数据库
Java 组件详细使用方法与封装实战指南
本指南详解Java核心组件使用与封装技巧,涵盖跨平台开发、面向对象编程、多线程、数据库操作等关键内容,并提供工具类、连接池、异常及响应结果的封装方法。结合Spring框架、MyBatis、Spring Boot等主流技术,助你掌握高质量Java组件设计与开发实践。
189 2
|
8月前
|
人工智能 JSON Java
列表结构与树结构转换分析与工具类封装(java版)
本文介绍了将线性列表转换为树形结构的实现方法及工具类封装。核心思路是先获取所有根节点,将其余节点作为子节点,通过递归构建每个根节点的子节点。关键在于节点需包含 `id`、`parentId` 和 `children` 三个属性。文中提供了两种封装方式:一是基于基类 `BaseTree` 的通用工具类,二是使用函数式接口实现更灵活的方式。推荐使用后者,因其避免了继承限制,更具扩展性。代码示例中使用了 Jackson 库进行 JSON 格式化输出,便于结果展示。最后总结指出,理解原理是进一步优化和封装的基础。
257 0