JavaSE_08_面向对象高级特性(封装)

本文详细介绍了Java中的包机制,包括包的创建、引用以及无包类与有包类的访问规则。接着探讨了访问控制在封装中的作用,通过访问修饰符(private,default,protected,public)限制对象的访问范围。最后,通过实例展示了如何进行封装,特别是私有化变量并提供getter/setter方法来实现信息隐藏和模块化。

《面向对象高级特性(封装)》

目录

  • Java包(精通)
  • 访问控制(熟练)
  • 封装(精通)

一、Java包

包(package)是类的容器,用来保存划分类名空间,主要目的是为解决同名类冲突问题,主要有以下特点:

  • 物理结构为文件夹,但包名也是标识符,遵循标识符原则;
  • 包声明:package pkg;(必须放在Java源码第一句)
  • 多级包声明方式:package pkg1.pkg2.pkg3;
  • 包引用:import pkg;
  • 无包类可访问有包类,有包类无法访问无包类。

案例一(有包类与无包类)

  1. 包创建;

请添加图片描述

  1. 有包类Test+无包类NoPkgClass创建 ;

请添加图片描述

  1. 无包类调用有包类(ok);

请添加图片描述

  1. 有包类调用无包类(error);

请添加图片描述

小结

无包类可以访问有包类,有包类无法访问无包类。

案例二(同名类引用)

  1. 创建同名类

请添加图片描述

  1. 测试类
package com.hpr.test;

//默认引用
import com.hpr.entity.Cat;

public class Test {
    Cat cat1;
    //全路径引用
    com.hpr.child.Cat cat2;
}

小结

当一个类中已经默认引用了一个包中的同名类,引用另一个包中同名类时将需要全路径引入

二、访问控制

封装将数据和处理数据的代码连接起来,同时提供另一个重要属性:访问控制。通过访问控制,可以阻止对象的滥用,并通过访问修饰符来限制访问范围。

访问修饰符当前类同包类不同包子类其他类
private
默认不写
protected
public

案例三(访问修饰符)

  • com.hpr.entity.Cat类(当前类中四个变量a、b、c、d均可访问)
package com.hpr.entity;

public class Cat {
    private int a = 1;
    int b = 2;
    protected int c = 3;
    public int d = 4;

    public void test() {
        System.out.println(a + b + c + d);
    }
}
  • com.hpr.entity.Dog类(Cat类的同包类,可访问b、c、d三个变量)
package com.hpr.entity;

public class Dog {
    public void test() {
        Cat cat = new Cat();
        System.out.println(cat.b + cat.c + cat.d);
    }
}
  • com.hpr.test.Test类(不同包其他类,仅可访问修饰符为public的变量d)
package com.hpr.test;

import com.hpr.entity.Cat;

public class Test {
    public static void main(String[] args) {
        Cat cat = new Cat();
        System.out.println(cat.d);
    }
}
  • 不同包中该类的子类可访问c、d两个变量(前置条件:继承);

三、封装

官方定义:将属性和操作结合为一个整体,并通过访问控制实现模块化及信息隐藏。

通俗理解:每一个类都是一个封装,即 变量+方法 的打包。

示例(私有化变量,提供对外接口)

生成set/get方法:鼠标右键——>Generate...——>Getter And Setter——>选择字段——>点击OK完成。

package com.hpr.entity;

public class Panda {
    //私有化变量
    private String name;
    private int age;
    private String food;

    //提供对外接口
    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 String getFood() {
        return food;
    }

    public void setFood(String food) {
        this.food = food;
    }
}

总结

重点

  1. Java包的使用及注意点;
  2. 访问修饰符;
  3. 封装概念。

难点

  1. 访问修饰符;
  2. 封装概念。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值