1 封装
1.1 何为封装
▪ 定义:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。
▪ 目的:增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。
▪ 我们程序设计追求“高内聚,低耦合”。
▪ 高内聚 :类的内部数据操作细节自己完成,不允许外部干涉;
▪ 低耦合 :仅对外暴露少量的方法用于使用。
▪ 方法:Java中通过将数据声明为私有的(private),再提供公共的(public)
方法:getXxx()和setXxx()实现对该属性的操作,以增强代码的可维护性。
1.2 访问修饰符
java通过访问修饰符来实现对象对该类成员的访问权限。
修饰符 | 类内部 | 同一个包 | 不同包的子类 | 同一个工程 |
---|---|---|---|---|
private | √ | |||
default(缺省) | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
对于class的权限修饰只可以用public和default(缺省)。
2 构造器
构造函数也叫做构造函数
▪ 构造函数名必须与其类名称相同
▪ 构造函数必须没有显式返回类型
▪ 它不声明返回值类型。(与声明为void不同)
▪ 不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值
有两种类型的构造函数
▪ 默认构造函数(无参数构造函数)
▪ 参数化构造函数
public abstract class Role {
private String name;
private int age;
private String sex;
public Role(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
public Role() {
super();
}
}
//构造器一般用来创建对象的同时初始化对象,
//构造器重载使得对象的创建更加灵活,方便创建各种不同的对象
构造器和构造函数的区别
3 JavaBean
▪ JavaBean是一种可重用的Java组件,它可以被Applet、Servlet、JSP等Java应用程序调用.也可以可视化地被Java开发工具使用。它包含属性(Properties)、方法(Methods)、事件(Events)等特性。
▪ JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。
//一个标准的JavaBean
public abstract class Role {
private String name;
private int age;
private String sex;
public Role(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
public Role() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
abstract void play() ;
@Override
public String toString() {
return "Role [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
4 关键词this
java中this关键字的用法:
▪ 调用本类中的属性,即类中的成员变量
▪ 调用本类中的其它方法
▪ 调用本类中的其它构造方法,调用时需要放在构造方法的首行
▪ 在任意方法或构造器内,如果使用当前类的成员变量或成员方法可以在其前面添加this,增强程序的阅读性。不过,通常我们都习惯省略this。
▪ 当形参与成员变量同名时,如果在方法内或构造器内需要使用成员变量,必须添加this来表明该变量是类的成员变量
▪ 使用this访问属性和方法时,如果在本类中未找到,会从父类中查找
▪ this可以作为一个类中构造器相互调用的特殊格式
▪ 构造器中不能通过"this(形参列表)"的方式调用自身构造器
具体代码可以参考上面JavaBean的代码
5 package和import
▪ package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包。
▪ 包帮助管理大型软件系统:将功能相近的类划分到同一个包中。
▪ 包可以包含类和子包,划分项目层次,便于管理
▪ 在源文件中使用import显式的导入指定包下的类或接口
▪ 声明在包的声明和类的声明之间。
▪ 如果需要导入多个类或接口,那么就并列显式多个import语句即可
▪ 举例:可以使用java.util.*的方式,一次性导入util包下所有的类或接口。
▪ 如果在代码中使用不同包下的同名的类。那么就需要使用类的全类名的方式指明调用的是哪个类。
▪ import static组合的使用:调用指定类或接口下的静态的属性或方法