封装的概述
封装的设计思想
- 隐藏对象内部的复杂性,只对外公开简单的接口,便于外界调用,从而提高系统的可扩展性按,可维护性
- 高内聚:类的内部数据操作细节自己完成,不允许外部干涉
- 低耦合:仅对外暴露少量方法用于使用
封装的实现
public class Student {
  private String name;
  private int age;
  public void setName(String n) {
    name = n;
  }
  public String getName() {
    return name;
  }
  public void setAge(int a) {
    age = a;
  }
  public int getAge() {
    return age;
  }
}
权限修饰符

构造器(Construct0r)
构造器的作用
示例
public class Student {
    private String name;
    private int age;
    // 无参构造
      public Student() {} 
     // 有参构造
      public Student(String n,int a) {
        name = n;
        age = a; 
    }
    //此处其他代码省略
}
注意
- Java会自动提供一个无参构造方法,一旦自己定义了构造方法,Java提供的默认无参构造方法就会失效
- 构造器名字必须与它所在的类名相同
- 它没有返回值,所以不需要void
- 构造器不能被static, final, synchronized, abstracct, native修饰
this关键字
this的含义
- this用于构造器中,表示正在创建的那个示例对象,即正在new谁,this就代表谁
- this用于实例方法中,表示调用该方法的对象,即谁在调用,this就代表谁
标准JavaBean
public class Student {
    // 成员变量
    private String name;
    private int age;
    // 构造方法
    public Student() {
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    // get/set成员方法
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getAge() {
        return age;
    }
    //其他成员方法列表
    public String getInfo(){
        return "姓名:" + name + ",年龄:" + age;
    }
}
包
包的作用
JDK自带的常用包
- java.lang----包含一些Java语言的核心类,如String、Math、Integer、 System和Thread等,提供常用功能
- java.io ----包含能提供多种输入/输出功能的类
- java.util----包含一些实用工具类,如集合框架类、日期时间、数组工具类Arrays,文本扫描仪Scanner,随机值产生工具Random
- java.sql和javax.sql----包含了java进行JDBC数据库编程的相关类/接口
- java.net----包含执行与网络相关的操作的类和接口
声明包的语法格式
package 包名;
注意
- 必须在源文件代码的首行
- 一个源文件只能有一个声明包的语句
- 每个单词都小写,单词之间使用.分隔
- 习惯使用公司域名倒置
使用其他包的类
使用类型的全名称
- java.util.Scanner input = new java.util.Scanner(System.in);
使用import导入
import 包.类名;
import 包.*;
import static 包.类名.静态成员; 
注意
- 使用java.lang包下的类,不需要import语句,就直接可以使用
- import语句必须在package下面,class的上面
- 当使用两个不同包的同名类时,例如:java.util.Date和java.sql.Date。一个使用全名称,一个使用简名称
示例
package com.atguigu.test;
import java.util.Scanner;
import java.util.Date;
import com.atguigu.bean.Student;
public class Test{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        Student stu = new Student();
        String str = "hello";
        Date now = new Date();
        java.sql.Date d = new java.sql.Date(346724566);        
    }
}