首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Java】面向对象的特征之一:封装(上)

【Java】面向对象的特征之一:封装(上)

作者头像
喜欢做梦
发布2024-11-25 18:03:25
发布2024-11-25 18:03:25
3440
举报
文章被收录于专栏:学习学习

一、封装

1.什么是封装?

封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开的接口和对象进行交互(对类进行包装,将一些细节隐藏起来,提供一些公开访问的东西就可以)。可以类比成一个手机,你只能看到外壳包装,确看不到内部元件的构成。

2.如何实现封装?

1.实现封装

java中主要通过访问权限来实现封装

  • 类可以将数据以及封装数据的方法结合在一起
  • 访问用来控制方法或者字段能否直接在类外使用
  • 不让别人知道就使用private,而被private修饰的成员变量或成员方法只能在当前类中被访问,其他类不能访问;
  • public就是都可以访问;
  • public和private都是访问限定符;
2.访问封装中的内容

如果被private修饰了只能在当前的类中使用,在其他类中无法使用,如果我想在其他类中使用怎么办?

代码如下:

代码语言:javascript
复制
class Cat{
    private String name;
    private int age;
    public String getName(){
        return this.name;
    }
    public void setName(String name){
        this.name=name;
    }
    public int getAge(){
        return this.age;
    }
    public void setAge(int age){
        this.age=age;
    }
  public void fun(){
      mew();
  }
    private void mew(){
        System.out.println("喵喵叫~");
    }
        }
public class Test {
    public static void main(String[] args) {
          Cat cat=new Cat();
          cat.setName("小白");
          cat.setAge(3);
          cat.fun();
    }
}

既然private只能在被当前类中使用,那么我们可以在当前类中使用成员方法来访问被private的成员变量或成员方法。

为什么被封装了还要在进行访问?

拿上面的图举例,我要实现如果有一个变量a,a等于1的时候,才能打印出喵喵叫这个结果,但我不想要让别人看到他是如何运行才得到的结果,只要别人要到这个结果就好,所以我要把这个具体的时候过程隐藏起来。

3.访问限定符
访问限定符:管当前修饰的字段或方法的访问权限
访问限定符有哪些?

理解:

private:私有的,只有自己能知道,其他人不知道;

default:只有自己家里人知道,其他人不知道;

public:公开的,所有人都能看到;

protected:继承中会讲到。

他们范围中的包的是什么?

4.包
1.什么是包?

包:为了更好的管理类,把多个类收集在一起,成为软件包。同一个类也可以根据不同属性再次进行组合。包的本质就是文件夹。

常见的包

  • java.lang:系统常用的基础类(String、Object);
  • java.lang.reflect:java反射编程包;
  • java.net:进行网络编程开发包;
  • java.sql:进行数据库开发的支持包;
  • java.util:是java提供的工具程序包;(非常重要
  • java.io:l/O编程开发包。
2.导入包中的类
1.相同包不同类
代码语言:javascript
复制
  public static void main(String[] args) {
        int[] array={1,2,3,4};
    }

java中已经提供了很多现成的类供我们使用,如果我们要打印这个数组,我们可以借助工具类Arrays来,我们可以将Arrays写出来来确定Arrays在哪一个包中。

我们要使用这个类就要将他们的路径写出来。

  • 推荐第一种,第二种写的有点长
  • 推荐第一种:指定导入的类名,为什么?
2.如果在不同的包中有相同的类的情况:
  • 如果遇到相同类不同包,java.util.*这样写法无法使用 ;
  • 你使用的时候也不知道使用的是这个包的哪一个类 ;

也可以使用import static导入包中的静态的方法和字段

代码语言:javascript
复制
import static java.lang.Math.*;
public class Test4 {
    public static void main(String[] args) {
        double x=23;
        double y=53;
        //double result=Math.sqrt(Math.pow(x,2)+Math.pow(y,2));
        double result=sqrt(pow(x,2)+pow(y,2));
    }
}
  • 这种一般不写
3.不同包的使用的相互使用:

Test2和Test_0716这两个类是在不同包底下的不同类。如果我要在Test_0716中使用Test2.java中的方法,应该怎么做?

  • 首先在Test_0716类中写出Test2,编译器会自动显示,Test2在那个包下,点击,会自动声明
  • 其次就是进行类的实例化以及使用和平常没有区别
3.自定义包

步骤:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、封装
    • 1.什么是封装?
    • 2.如何实现封装?
      • 1.实现封装
      • 2.访问封装中的内容
      • 3.访问限定符
      • 4.包
      • 1.什么是包?
      • 2.导入包中的类
      • 3.自定义包
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档