JAVA——封装

一、封装的概念

封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互.

  • 面向对象程序三大特性:封装,继承,多态.
  • 通俗来说,封装就是套壳屏蔽细节.比如:一个电脑真正工作的是CPU,显卡等硬件,而用户只是通过鼠标和键盘等设备来和计算机进行交互.

在这里插入图片描述

二、访问修饰限定符

加粗样式用于控制成员变量和方法的访问权限 , Java中提供了四种访问限定符:

  • public:哪里都可以使用.
  • default: 只能在同一个包中使用.
  • private:只能在自己的类中使用.

在这里插入图片描述

三、封装扩展之包

3.1 包的概念:
为了更好的管理类,把多个类收集在一起成为一组,称为软件包.通俗来说,其实就是一个文件夹.
3.2 包的作用:
在同一个项目中如果想要定义相同名称的类,只要位于不同的包中即可.

在这里插入图片描述

3.3 自定义包:

操作步骤:
第一步 : 右键 src -> New -> 包(Package):
在这里插入图片描述
第二步 : 对话框中输入包名, 例如:
在这里插入图片描述

第三步 : 最后我们打开磁盘上的文件路径, IDEA 就自动创建出来了:
在这里插入图片描述

四、 内部类(难点)

内部类也是封装的一种体现:

在这里插入图片描述

4.1普通内部类

概念: 未被static修饰的成员内部类。

class OutClass {
    private int a;
    static int b;
    int c = 30;

    public void methodA() {
        a = 10;
        System.out.println(a);
    }

    public void methodB() {
        b= 20;
        System.out.println(b);
    }
    // 普通内部类
    class InnerClass {
        char c;
        public void methodInner() {
            a = 100;
            b = 200;
            methodA();
            methodB();
            c = 97; //优先使用自己
            System.out.println(c);
            System.out.println(OutClass.this.c); //要想访问外部的,外部类名.this
        }
    }
}
public class Test2 {
    public static void main(String[] args) {
        OutClass outClass = new OutClass(); //创建外部类对象
        OutClass.InnerClass innerClass = outClass.new InnerClass(); //结论
        innerClass.methodInner();
    }
}

注意事项
1. 外部类中的任何成员都可以在普通内部类方法中访问 .
2. 在普通内部类方法中访问同名的成员时,优先访问自己的.
3. 普通内部类对象必须在先有外部类对象前提下才能创建 .

4.2静态内部类
 概念:被static修饰的内部成员类称为静态内部类.
class OutClass {
    private int a;
    static int b; //默认
    public void methodA() {
        a = 10;
        System.out.println(a);
    }
    public static void methodB() {
        System.out.println(b);
    }
    // 静态内部类
    static class InnerClass {
        public void methodInner() {
            // a = 10; 不能使用非静态的成员变量或方法
            b = 20;
            System.out.println(b);
            methodB();
        }
    }
}
public class Test3 {
    public static void main(String[] args) {
        OutClass.InnerClass innerClass = new OutClass.InnerClass(); //不需要创建对象
        innerClass.methodInner();
    }
}

注意事项
1. 在静态内部类中只能访问外部类中的静态成员 .
2. 创建静态内部类对象时,不需要先创建外部类对象,使用类名即可访问.


与君共勉 : 青春有几年,疫情占三年,去做自己喜欢的事吧.
在这里插入图片描述

  • 24
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web图解

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值