封装的概述
封装的设计思想
- 隐藏对象内部的复杂性,只对外公开简单的接口,便于外界调用,从而提高系统的可扩展性按,可维护性
- 高内聚:类的内部数据操作细节自己完成,不允许外部干涉
- 低耦合:仅对外暴露少量方法用于使用
封装的实现
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);
}
}