隐藏和封装
封装
封装是面向对象编程的三大特性之一。
封装的目的:
隐藏类方法实现的细节;
让使用者只能通过预先定义的方法来访问数据,从而可以在方法中加入一些控制逻辑,限制对成员变量的不合理访问。
简单的理解就是,把成员变量隐藏起来,暴露方法来提供成员的修改和访问
public class Student {
private String name;
private int age;
private boolean sex;
public Student(String name, int age, boolean sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name + (this.sex ? "先生" : "女士");
}
}
Getter 和 Setter
把属性定义为 private 类型,即私有,向外部暴露其 get 和 set 方法。
相关方法名的定义:
get + 首字母大写的属性名() :get 方法一般都是具有和属性数据类型一致的返回值,并且是没有形参的。
set + 首字母大写的属性名(参数):set 方法一般都是具有和属性数据类型一致的方法参数,返回值一般是 void。
在 Eclipse 中,可以通过快捷方式生成相关属性的 getter 和 setter
在 「source」-> 「generate getters and setters」
package 和 import
为了便于类文件的管理,Java 中引入了包的概念 package,类的唯一性是要带包名的。
包名的命名规范:
第一层是企业的域名的反写
例如:com.ntqingniao
第二层是企业项目的名称
例如:com.ntqingniao.j96、com.ntqingniao.crm
第三层是企业项目模块的名称
例如:com.ntqingniao.j96.oop、com.ntqingniao.crm.base
在 Eclipse 中 「new-package」方式建包
类定义包的语法
// 在类文件的第一行
package com.ntqingniao.j96.oop;
在不同的包中,是可以定义相同类名的类的。因为一个类的唯一性是包含包名的,比如 com.ntqingniao.j96.oop.Demo1 叫做类的全名。
在实际的企业开发中,是不允许出现没有包的类。
使用包
使用 import 关键字将本类要使用的其他包中的类进行引入。
但是,import 不是必须的,我们可以使用类全名的方式进行类的使用。一般不建议,太麻烦。
使用 ALT+/ 可以单个引入,也可以使用 CTRL+SHIFT+O 全部引入。
如果要引入某个包下面的所有类,可以使用通配符 * ,例如,引入com.ntqingniao.j96.oop.*,但是要注意通配符只能出现在最后。
对于 java.lang 包中的类,系统会自动的默认引入,不需要使用 import。
自学部分:静态引入 import static,用的较少
访问控制修饰符
访问控制修饰符能修饰的对象包括:成员变量、方法、构造器
访问控制修饰符,就是控制修饰的对象可以在什么样的范围(包)内被访问。
“`
private:只能在当前类中被访问,一般用于对成员变量的修饰;
default:没有定义修饰符就是 default;
protected:可以在子类和本包中被访问,外部包不能被访问,在有一定业务意义的包中,可以定义类中成员变量是protected;
public:一般定义在方法或者一些常量中,用于外部接口的访问。
在实际的开发中,大部分的场景使用 private 定义属性,public 定义方法。
JDK 中比较重要的包
java.lang:包含了 Java 语言的核心类库,如 String、System、Math等等,使用该包下的类是不需要显式引入;
java.util:包含了大量的工具类,如 Date、集合框架;
java.net:Java 网络编程的类和接口包;
java.io:Java 输入输出,如流等方面编程的包;
java.text:格式化方面的类;
java.sql:数据库编程方面的类和接口包;
java.awt:图形用户界面方面的类和接口包。