09Java基础之封装
封装
该露的露,该藏的藏
- 我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。
封装(数据的隐藏):通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。
记住这句话就够了:属性私有,通过get/set来操作。
学生类:
// 类,它的核心就是封装,private:私有的
public class Student {
// 属性私有
// 名字
private String name;
// 学号
private int id;
// 性别
private char sex;
// 年龄
private int age;
// 提供一些可以操作这些属性的方法
// 通过get、set方法
// get 获得这个数据
public String getName(){
return this.name;
}
public int getId(){
return this.id;
}
public char getSex(){
return this.sex;
}
public int getAge(){
return this.age;
}
// set 给这个数据设置值
public void setName(String name){
this.name = name;
}
public void setId(int id){
this.id = id;
}
public void setSex(char sex){
this.sex = sex;
}
public void setAge(int age){
if(age >=120 || age <= 0){
this.age = age;
}
}
调用:
public static void main(String[] args) {
Student s1 = new Student();
s1.setName("王二小");
System.out.println(s1.getName());
}
- 封装的意义:
- 提高程序的安全性,保护数据。
- 隐藏代码的实现细节。
- 接口的统一管理。
- 系统可维护性的提升。
实体类
- 实体类是一种特殊形式的类。
- 这个类中的成员变量必须私有,并且要对外提供相应的get/set方法,类中必须有一个公共的无参构造器。一般情况也会提供一个有参构造器。
作用:
- 实体类的对象本身可以用于存储数据。
- 实体类的对象只负责数据的存取,对于数据的业务处理应该交给另一个对象来处理实现。这是软件设计中很流行的一种设计思想:分层思想。
案例:
/**
* Student:实体类
*/
public class Student {
private String name;
private int age;
private double score;
private double height;
// 无参构造
public Student() {
}
// 有参构造
public Student(String name, int age, double score, double height) {
this.name = name;
this.age = age;
this.score = score;
this.height = height;
}
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 double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
// 业务处理类
public class StudentOperator {
private Student s;
public StudentOperator() {
}
// 有参构造
public StudentOperator(Student s){
this.s = s;
}
public void printPass(){
if(s.getScore() >= 60){
System.out.println(s.getName() + ",他及格了!");
}
else{
System.out.println(s.getName() + ",他没及格!");
}
}
}
main方法:
public static void main(String[] args) {
Student s1 = new Student("王志博", 21, 99.9, 1.75);
StudentOperator so = new StudentOperator(s1);
so.printPass();
}
输出结果:
王志博,他及格了!
String的概述
String代表字符串,可以用来创建对象封装字符串数据,并对其进行处理。
String创建对象封装字符串的方式:
- java程序中的所有字符串文字(例如“abc”)都为此类的对象。
- 调用String类的构造器初始化字符串对象。
![]()
String name = "";
String name1 = new String();
这两种方式创建的对象效果是一样的,但是更推荐第一种。
String提供的常用方法

案例
public class StringDemo01 {
public static void main(String[] args) {
// 目标快速熟悉String提供的处理字符串的方法
String name = "i love java so good";
// 1. 获取字符串长度
System.out.println("字符串长度:"+ name.length());
// 2. 提取字符串中某个索引位置处的字符
System.out.println(name.charAt(2));
// 3. 字符串的遍历
for(int i = 0; i < name.length(); i++){
System.out.println(name.charAt(i));
}
// 4.把字符串转换成字符数组
char[] cr = name.toCharArray();
for (int i = 0; i < cr.length; i++) {
System.out.println(cr[i]);
}
//5. 判断字符串内容是否一致,内容一样就返回true(重点)
String s1 = new String("qazwsx");
String s2 = new String("qazwsx");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
// 6. 忽略大小写比较字符串内容(验证码比较)
String t1 = "aStg";
String t2 = "astg";
System.out.println(t1.equals(t2));
System.out.println(t1.equalsIgnoreCase(t2));
// 7. 截取字符串内容
System.out.println(name.substring(0,5));
// 8. 从当前位置一直截取到末尾
System.out.println(name.substring(5));
// 9. 把字符串中的某个内容替换成新内容,并返回新的字符串
String info = "这个游戏简直TM就是垃圾,SB,去你大爷!";
System.out.println(info.replace("TM","**").
replace("SB","**").
replace("去你大爷", "****"));
// 10. 判断字符串中是否包含关键字
System.out.println(name.contains("love"));
// 11. 判断字符串是否以什么内容开头
System.out.println(name.startsWith("i"));
// 12. 判断字符串是否以什么内容结尾
System.out.println(name.endsWith("you"));
// 13. 把字符串按照制定内容切割成多个字符串(重要)
String seg = "王一博,刘晓明,陈伟健,王宝强";
String[] names = seg.split(",");
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
// 14. 把字符串转成大写
System.out.println(name.toUpperCase());
// 15. 把字符串转成小写
System.out.println(name.toLowerCase());
// 16. 去除字符串两端的空格
String str = " 我是一个字符串 ";
System.out.println(str.trim());
}
}
09Java基础之封装的更多相关文章
- 二十四. Python基础(24)--封装
二十四. Python基础(24)--封装 ● 知识结构 ● 类属性和__slots__属性 class Student(object): grade = 3 # 也可以写在__slots ...
- Java第三次作业——面向对象基础(封装)
Java第三次作业--面向对象基础(封装) (一)学习总结 1.什么是面向对象的封装性,Java中是如何实现封装性的?试举例说明. 封装性 封装性是面向对象的方法所应遵循的一个重要原则,它有两个含义: ...
- JavaSE基础之封装
JavaSE基础之封装 一.Java中的封装 1.字面意思: 包装: 2.专业含义: 面向对象的三大特征之一: 指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所 ...
- 九、Java基础---------面向对象封装、继承、多态
封装 1.1 基本概念 封装(encapsulation)是面向对象三大特征之一,它是指将对象的状态信心隐藏在对象的内部,不允许外部直接进行访问,而是通过该类提供的方法来实现对内部信息的操作和访问. ...
- C++基础——类封装简单示例
一.前言 在IC前端设计/验证领域,只会HDL远远不够.目前大多数项目使用已开发好的系统架构和IP Core,因此设计部分的工作量慢慢向系统集成和验证方向转移.而在集成和验证过程中,往往以各种脚本和面 ...
- Python基础之封装
一.什么是封装 在程序设计中,封装(Encapsulation)是对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,其 含义是其他程序无法调用. 要了解封装,离不开“私有化”,就是将类或者 ...
- C++ Any 任意基础类型封装
下面是本人使用C++封装的一个针对任意基础类型以及用户自定义类型指针的通用类型.目的是为方便常用类型使用统一化及便利化.该类型的使用就与平时使用基础类型基本没什么差别.具体可参看以下代码及测试代码. ...
- python开发面向对象基础:封装
一,封装 [封装] 隐藏对象的属性和实现细节,仅对外提供公共访问方式. [好处] 1. 将变化隔离: 2. 便于使用: 3. 提高复用性: 4. 提高安全性: [封装原则] 1. 将不需要对外提供的内 ...
- video基础介绍&封装react-video基础组件,ES6
好几个月没有写博客了,人都赖了,今天抽了一点时间把最近项目react中video整理了一下(感觉这个以后用的活比较多) 1.前三部部分详细归纳了video的基础知识,属性和功能: 2.第四部分是封装了 ...
- Python全栈--9 __import__ 反射和面向对象基础 self 封装 继承(多继承的顺序) 多态
一.反射 python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删 ...
随机推荐
- Java基础之“Double类型,保留两位小数,避免因小数过长导致乱码问题”
保留两位小数 方案一 Double totalSaleAmount = 4.174558045899999E7; DecimalFormat df = new DecimalFormat(" ...
- Flutter视频压缩技术:如何在应用中优化视频文件的质量和大小?
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- Nacos源码—9.Nacos升级gRPC分析四
大纲 10.gRPC客户端初始化分析 11.gRPC客户端的心跳机制(健康检查) 12.gRPC服务端如何处理客户端的建立连接请求 13.gRPC服务端如何映射各种请求与对应的Handler处理类 1 ...
- 用AI做了个动态下发微信群二维码应用
微信群的二维码每周都要更新一次,比较麻烦.于是搞了个简单的上传/下发的 Web 应用. 下面是优化前后流程,虽然看似步骤少了一步,但大大节省了时间. 主要功能 常见类型图片上传,支持删除,提供外链访问 ...
- Pycomcad快速绘制参数化多段线的一种方法
任务: 绘制出不同长度的相同型式的多段线,如上图所示,仅仅是300mm和500mm的区别,3个弯折处都一样,都是圆弧段,对于常规二次开发思路,是通过数学计算,计算出圆弧的圆心的位置,用固定的半径,绘制 ...
- [Redis] Redis (7) 连接与会话管理
序:文由 因今日排查问题,发现微服务因 ERR max number of clients reached (已达到客户端的最大数量) redis异常,而导致服务在健康检测时未通过,进而导致高频宕机. ...
- Spring Boot中使用注解实现简单工厂模式
前言 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫静态工厂模式(Simple Factory Pattern),但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出接 ...
- IDEA 调试Java代码的两个技巧
本文介绍两个使用IDEA 调试Java代码的两个技巧: 修改变量值 使用RuntimeException终止代码执行 修改变量值 在Java代码调试过程中,我们可以修改变量值,使其达到走指定分 ...
- 如何用看板系统打造中小企业的AI时代敏捷工作流?
一.敏捷与看板:AI浪潮下企业协同的"底层重构" 在AI工具和数字平台井喷式发展的今天,敏捷已不再是IT行业专属概念,而成为企业组织效率提升的共识.看板系统作为敏捷核心机制之一,正 ...
- Centos7.x根分区扩容
背景说明 我们在部署好的系统中,随着数据的不断增加, 发现根分区频繁出现满载问题,这种情况下,我们需要对根分区进行扩容. 方案说明 • 使用空闲磁盘扩容到根分区 • 使用空闲的分区扩容到根分区 • 使 ...
