《面向对象高级特性(封装)》
目录
一、Java包
包(package)是类的容器,用来保存划分类名空间,主要目的是为解决同名类冲突问题,主要有以下特点:
- 物理结构为文件夹,但包名也是标识符,遵循标识符原则;
- 包声明:package pkg;(必须放在Java源码第一句)
- 多级包声明方式:package pkg1.pkg2.pkg3;
- 包引用:import pkg;
- 无包类可访问有包类,有包类无法访问无包类。
案例一(有包类与无包类)
- 包创建;

- 有包类Test+无包类NoPkgClass创建 ;

- 无包类调用有包类(ok);

- 有包类调用无包类(error);

小结
无包类可以访问有包类,有包类无法访问无包类。
案例二(同名类引用)
- 创建同名类

- 测试类
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;
}
}
总结
重点
- Java包的使用及注意点;
- 访问修饰符;
- 封装概念。
难点
- 访问修饰符;
- 封装概念。
本文详细介绍了Java中的包机制,包括包的创建、引用以及无包类与有包类的访问规则。接着探讨了访问控制在封装中的作用,通过访问修饰符(private,default,protected,public)限制对象的访问范围。最后,通过实例展示了如何进行封装,特别是私有化变量并提供getter/setter方法来实现信息隐藏和模块化。
8895

被折叠的 条评论
为什么被折叠?



