【JavaSE】Java基础语法(九):封装

简介: ☔1. private关键字概述 : private是一个修饰符,可以用来修饰成员(成员变量,成员方法)特点 : 被private修饰的成员,只能在本类进行访问,针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰

☔1. private关键字

概述 : private是一个修饰符,可以用来修饰成员(成员变量,成员方法

特点 :  被private修饰的成员,只能在本类进行访问,针对private修饰的成员变量,如果需要被其他

类使用,提供相应的操作


提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰

提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰

示例代码

clasclass Student {
  //成员变量
  String name;
  private int age;
  //提供get/set方法
  public void setAge(int a) {
    if(a<0 || a>120) {
      System.out.println("你给的年龄有误");
    } else {
      age = a;
    }
  }
  public int getAge() {
    return age;
  }
  //成员方法
  public void show() {
    System.out.println(name + "," + age);
  }
}

测试类

public class StudentDemo {
  public static void main(String[] args) {
    //创建对象
    Student s = new Student();
    //给成员变量赋值
    s.name = "刘亦菲";
    s.setAge(30);
    //调用show方法
    s.show();
  }
}

☔2. private关键字的使用

需求

定义标准的学生类,要求name和age使用private修饰

并提供set和get方法以及便于显示数据的show方法

测试类中创建对象并使用,最终控制台输出 刘亦菲,20

示例代码class Student {

//成员变量

private String name;

private int age;

//get/set方法

public void setName(String n) {

 name = n;

}

public String getName() {

 return name;

}

public void setAge(int a) {

 age = a;

}

public int getAge() {

 return age;

}

public void show() {

 System.out.println(name + "," + age);

}

}

学生类

 class Student {
  //成员变量
  private String name;
  private int age;
  //get/set方法
  public void setName(String n) {
    name = n;
  }
  public String getName() {
    return name;
  }
  public void setAge(int a) {
    age = a;
  }
  public int getAge() {
    return age;
  }
  public void show() {
    System.out.println(name + "," + age);
  }
}

学生测试类

public class StudentDemo {
  public static void main(String[] args) {
  //创建对象
  Student s = new Student();
  //使用set方法给成员变量赋值
  s.setName("刘亦菲");
  s.setAge(20);
  s.show();
  //使用get方法获取成员变量的值
  System.out.println(s.getName() + "---" + s.getAge());
  System.out.println(s.getName() + "," + s.getAge());
  }
}

☔3. this关键字


概述 :

this修饰的变量用于指代成员变量,其主要作用是(区分局部变量和成员变量的重名问题)

  • 方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
  • 方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量

代码实现 :

public class Student {
  private String name;
  private int age;
  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;
  }
  public void show() {
    System.out.println(name + "," + age);
  }
}

☔4. this内存原理

注意 : this代表当前调用方法的引用,哪个对象调用的方法,this就代表哪一个对象

图解

3801ec38f76147248cb1b1dd5c26a71f.png

5100e1cf1cd14a8e929f839d483a46fd.png

☔5. 封装思想

  1. 封装概述
    是面向对象三大特征之一(封装,继承,多态)
    是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的

封装原则

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏

信息的操作和访问

成员变量private,提供对应的getXxx()/setXxx()方法

封装好处

通过方法来控制成员变量的操作,提高了代码的安全性

把代码用方法进行封装,提高了代码的复用性

相关文章
|
2月前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
本系列教程笔记详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。若需快速学习Kotlin,建议查看“简洁”系列教程。本期重点介绍了Kotlin与Java的共存方式,包括属性、单例对象、默认参数方法、包方法、扩展方法以及内部类和成员的互操作性。通过这些内容,帮助你在项目中更好地结合使用这两种语言。
50 1
|
2月前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
35 2
|
20天前
|
Java
java do while 的语法怎么用?
java do while 的语法怎么用?
34 3
|
2月前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
本系列教程详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。对于希望快速学习Kotlin的用户,推荐查看“简洁”系列教程。本文档重点介绍了Kotlin与Java混编的技巧,包括代码转换、类调用、ProGuard问题、Android library开发建议以及在Kotlin和Java之间互相调用的方法。
31 1
|
2月前
|
安全 Java 编译器
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
本教程详细讲解Kotlin语法,适合希望深入了解Kotlin的开发者。若需快速入门,建议查阅“简洁”系列教程。本文重点探讨Kotlin与Java共存的高级话题,包括属性访问、空安全、泛型处理、同步机制及SAM转换等,助你在项目中逐步引入Kotlin。
30 1
|
2月前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
Kotlin语法笔记(28) -Kotlin 与 Java 混编
33 2
|
2月前
|
安全 Java 编译器
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
34 0
|
6天前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
36 6
|
21天前
|
设计模式 Java 开发者
Java多线程编程的陷阱与解决方案####
本文深入探讨了Java多线程编程中常见的问题及其解决策略。通过分析竞态条件、死锁、活锁等典型场景,并结合代码示例和实用技巧,帮助开发者有效避免这些陷阱,提升并发程序的稳定性和性能。 ####
|
19天前
|
存储 监控 小程序
Java中的线程池优化实践####
本文深入探讨了Java中线程池的工作原理,分析了常见的线程池类型及其适用场景,并通过实际案例展示了如何根据应用需求进行线程池的优化配置。文章首先介绍了线程池的基本概念和核心参数,随后详细阐述了几种常见的线程池实现(如FixedThreadPool、CachedThreadPool、ScheduledThreadPool等)的特点及使用场景。接着,通过一个电商系统订单处理的实际案例,分析了线程池参数设置不当导致的性能问题,并提出了相应的优化策略。最终,总结了线程池优化的最佳实践,旨在帮助开发者更好地利用Java线程池提升应用性能和稳定性。 ####
下一篇
DataWorks