1、为什么有封装
- 当我们创建一个类的对象以后,我们可以通过”对象.属性“的形式,对对象属性就行赋值,这里赋值操作受到属性的数据类型和存储范围的制约,但是除此之外,没有其他制约条件,但是在实际应用中,往往需要给属性赋值加入额外的限制条件,这个条件就不能在属性声明时体现,我们只能通过方法进行限制条件的添加,同时需要避免用户再使用”对象.属性“的形式进行赋值,则需要将属性声明为私有的(private),此时就体现出面向对象的封装性了。
2、封装性的体现
- 将类的属性私有化(private)后,同时,提供公共的方法来设置和获取属性的值
- 不对外暴露的私有方法
- 单例模式
class Animal{
String name;
private int age;
int legs;
// 对属性的设置
public void setAge(int a){
if(a>0 && a%2==0){
age = a;
}else{
age = 0;
}
}
//对属性的获取
public int getAge(){
return age;
}
}
3、权限修饰符
封装性的体现,需要权限修饰符配合
3.1 四种权限修饰符
private、缺省、protected、public
- 四种权限可以修饰类及类内部结构:属性、方法、构造器、内部类
- 修饰类只能使用:public、缺省
4、类的成员之三——构造器(构造方法)
构造器的作用:创建对象、初始化对象
- 如果没有显示的定义类的构造器,则系统默认提供一个空参构造器
- 定义构造器的格式:权限修饰符 类名(形参列表){ }
- 一个类中定义的多个构造器,彼此构成重构
- 一旦显示的定义了类的构造器之后,系统就不在提供默认的空参构造器
- 一个类中,至少要有一个构造器
public class Test{
public static void main(String[] args) {
Person p= new Person();
Person p1= new Person("Tom",12);
p1.getName()
}
}
class Person{
//属性
int age;
String name;
//构造器
public Person(){
// 设置所以对象初始化属性值
name = "Tom";
age = 12;
}
public Person(String n,int a){
name = n;
age = a;
}
// 方法
public void setName(String n){
name = n;
}
public String getName( ){
return name;
}
}
5、package关键字使用
- 为了更好的实现类的管理,提供包的概念
- 使用package声明类或者接口所属的包,提供包的概念
- 包属于标识符,需要遵循标识符的命名规范(全部小写)
- 每“."一次,就代表一层文件目录
- 同一个包下,不能命名同名接口或类,不同包下可以命名同名接口或类
package bank;
6、MVC模式
7、import关键字使用
- 在源文件中显示的使用import结构导入指定包下的接口或类
- 声明在包的声明和类的声明之间
- 如果需要导入多个结构,则并列写出即可
- 可以使用" xxx.* "的方式导入xxx包下的所有接口
package BankNew;
import java.util.ArrayList;
import java.util.* // 导入这个包下面的所有类