目录
什么是封装
面向对象的三大特点是封装继承与多态
封装:将数据和操作数据的方法有机的结合,隐藏对象的属性和实现细节,仅对外公开接口来实现和对象对象的交互,对类实现的细节实现了隐藏。
比如说对于一个电脑使用者来说,计算机厂家只会提供一个接口,实现用过键盘与计算机进行交互即可,而内部的核心部件,CPU,线路等都会被套的外壳封装起来。
在弄清楚封装之前,先来了解一下public与private
这个两个关键字都是Java当中的访问,访问修饰限定符,决定使用的权限
public指的是公开的,也就是使用权限很大,任何状态下都能使用
private是指私有的,不公开的,有更好的安全性,使用权限只是在一个类当中
虽然无法直接访问private修饰的成员变量,但是可以通过其他public修饰的方法间接访问被封装的方法。
class Person {
private String name ;
private int age ;
String sex;//默认的:包访问权限
public Person() {
System.out.println("不带参数的构造方法!");
}
public Person(String name,int age) {
this.name = name;
this.age = age;
System.out.println("带2个参数的构造方法!");
}
public void setName(String name) {
this.name = name;
}
private void sleep() {
System.out.println(this.name+" 正在吃饭!");
}
public void eat() {
this.sleep();
}
}
什么是包
在面向对象体系中,提出了一个软件包的概念,即: 为了更好的管理类,把多个类收集在一起成为一组,称为软件 包。Java 中已经提供了很多现成的类供我们使用 . 例如 Date 类:可以使用 java.util.Date 导入 java.util 这个包中的 Date类.import java . util . Date 就代表在这个文件里导入java.util包中名为Date的这个类也可以java.util.Date date = new java.util.Date()导入包如果需要使用 java.util 中的其他类 , 可以使用 import java.util.*但是我们 更建议显式的指定要导入的类名 . 否则还是容易出现冲突 的情况 .例:import java . util . * ;import java . sql . * ;util 和 sql 中都存在一个 Date 这样的类 , 此时就会出现歧义 , 编译出错
可以使用
import static
导入包中静态的方法和字段。
import static java.lang.Math.*;
public class Test {
public static void main(String[] args) {
double x = 30;
double y = 40;
// 静态导入的方式写起来更方便一些.
// double result = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
double result = sqrt(pow(x, 2) + pow(y, 2));
System.out.println(result);
}
}
自定义包
在 IDEA 中先新建一个包: 右键 src -> 新建 -> 包
![](https://i-blog.csdnimg.cn/blog_migrate/1aac2f1889e04b9235c1a02fc68e7fc7.png)
1.在文件的最上方加上一个 package 语句指定该代码在哪个包中.
2.包名需要尽量指定成唯一的名字 , 通常会用公司的域名的颠倒形式 ( 例如 com.bit.demo1 ).3.包名要和代码路径相匹配 . 例如创建 com.bit.demo1 的包 , 那么会存在一个对应的路径 com/bit/demo1 来存储 代码.4.如果一个类没有 package 语句 , 则该类被放到一个默认包中 .
![](https://i-blog.csdnimg.cn/blog_migrate/1c6acf6e4a1fb5c7fde4e3a33b9d9105.png)
默认权限就是包访问权限
常见的包
1. java.lang: 系统常用基础类 (String 、 Object), 此包从 JDK1.1 后自动导入。2. java.lang.reflflect:java 反射编程包 ;3. java.net: 进行网络编程开发包。4. java.sql: 进行数据库开发的支持包。5. java.util: 是 java 提供的工具程序包。 ( 集合类等 ) 非常重要6. java.io:I/O 编程开发包。