• 【Java初阶】面向对象三大特性之封装


     🌈刷题,面试,求职,快来牛客网一起成为offer收割机!🌈

    点击注册收割offer

    d924065539c14401af169e0db320941a.png

     

    目录

    JavaSE 封装

    一. 包的概念

    二. 导入包中的类

    三. 自定义包

    四. 访问限定符


    一. 包的概念

    • 在开发过程中,会定义很多类,随着类越写越多,难免会出现类重名而发生覆盖的情况,为了在使用它们的时候不让编译器混淆,我们给类加上一个限定 (前缀),把所有java程序保存在各自的目录里面,而该目录就是包,包的本质实际上就是一个文件夹

      • 即:把它们放在不同的包里面,调用时再加上前缀即可;这样好处是对同名的类进行了区分;能精确指出我们需要的哪一个;让同名的类在一个程序中可以共存 包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式

    在同一个工程中允许存在相同名称的类,只要处在不同的包中即可

    二. 导入包中的类

     

    • 使用 import语句导入包

       

      1. import java.util.Date;
      2. public class TestDemo {
      3.   public static void main(String[] args) {
      4.       Date date = new Date();
      5.       System.out.println(date.getTime());
      6.   }
      7. }

      f43c3227db8a08fc2d21929ff6bd5484.png

      • 若使用import.java.util.*导包时,应注意避免引用不明确的问题

        Error:(5, 9) java: 对Date的引用不明确

        java.sql 中的类 java.sql.Date 和 java.util 中的类 java.util.Date 都匹配

        fdb7d43ff6834af58a0d504b32b485c9.png

         

         

    • import static导入包中静态的方法和字段

      1. import static java.lang.Math.*;
      2. //可以直接使用Math类中的所有静态成员
      3. public class Test {
      4.    public static void main(String[] args) {
      5.        double x = 30;
      6.        double y = 40;
      7. // 静态导入的方式写起来更方便一些.
      8. // double result = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
      9.        double result = sqrt(pow(x, 2) + pow(y, 2));
      10.        System.out.println(result);
      11.   }
      12. }

      一个完整类名是包名+类名,在没有 import 导入的情况下,使用一个类需要给出完整的类名

    三. 自定义包

    1. 在文件的最上方加上一个 package 语句指定该代码在哪个包中.

    2. 包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式(例如 com.snut.demo1 ).

    3. 包名要和代码路径相匹配. 例如创建 com.snut.demo1 的包, 那么会存在一个对应的路径com/snut/demo1 来存储代码.

    4. 如果一个类没有 package 语句, 则该类被放到一个默认包中.

    • 建包

    98b01849ea64cf89c7ca52f4623da172.png

    • 建类

    56dde607033b4cf38d563b60013635d8.png

     

    • 创建的 Test.java 文件的最上方, 就出现了一个 package 语句

       

    18fa94451c7049a360c4815969956368.png

    四. 访问限定符

    Java中提供了四种访问限定符 public>protected>default>private

    范围privatedefaultprotectedpublic
    同一包中的同一类
    同一包中的不同类 
    不同包中的子类  
    不同包中的非子类   
    • private

      封装

    1. public class TestDemo{
    2.    public static void main(String[] args) {
    3.        Person p = new Person();
    4.        p.setName("bit");
    5.        System.out.println(p.getName());
    6.   }
    7. }
    8. //对类内部的细节进行了隐藏/封装,对类外部提供一些公开的接口,供其他的用户进行访问
    9. class Person{
    10.    private String name;//此时的name只能在类内部进行访问
    11.    public int age;
    12.    public String getName() {
    13.        return name;
    14.   }
    15.    public void setName(String name) {
    16.        this.name = name;
    17.   }
    18.    public int getAge() {
    19.        return age;
    20.   }
    21.    public void setAge(int age) {
    22.        this.age = age;
    23.   }
    24.    public void show(){
    25.        System.out.println("姓名: "+name+"年龄: "+age);
    26.   }
    27. }
    28. // private属性:只能在Person类中访问,不能被其他类访问
    • default(默认)

      1. class Person{
      2.    private String name;
      3.    int age;          //默认
      4. }
      5. // default属性:只能被本包中类访问

       

    • public(公开的)

    被public所修饰的成员可以在任何类中都能被访问到。可以修饰类,构造方法,数据成员,方法成员

     

     

  • 相关阅读:
    java-php-python-毕业生交流学习平台计算机毕业设计
    WPF/C#:BusinessLayerValidation
    【Spring】从Spring源码入手分析广播与监听并完成项目实战
    基于ASP学生资助管理系统的设计与实现
    OpenFeign不支持{}特殊字符的header解决
    【嵌入式】STM32控制脉冲个数
    中国高压直流接触器行业发展动态与应用前景预测报告(2022-2028年)
    波生发生器的设计仿真图
    位运算及其应用
    引起数据中心失火爆炸的原因解析
  • 原文地址:https://blog.csdn.net/m0_56361048/article/details/126547802