写在前面,面向对象有三大特征:
1.封装
2.继承
3.多态
今天我们来简单学习一下java的第一大特征封装。
封装
-
概念
将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来对隐藏的信息进行操作和访问。
封装有:
属性的封装、方法的封装、类的封装、组件的封装、模块化封装、系统级封装… -
好处
1、模块化
2、信息隐藏
3、代码重用
4、插件化易于调试
5、具有安全性
类的封装
-
类的封装,就是将类中的属性私有化,即用private关键字来修饰。
私有属性只能在它所在的类中被访问。 -
在其他类中要间接访问
要通过提供的方法实现对信息的操作和访问getXxx()/setXxx()
1.getXxx():专门用于向变量设置数据(无参数)(拿出来
2. setXxx():专门私语获取变量的数据 (有参数)(放进去
注意:参数为boolean类型时setXxx不变,getXxx要变成isXxx -
java中的this关键字,this关键字代表当前对象
this.属性:操作当前对象的属性
this.方法:调用当前对象的方法
属性的封装
//以person为对象构造setter和getter
//以及this的使用
public class person {
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
封装时,我们还可以控制输入的数据的范围。
以上面为例,一个人的年龄即不可能为负也不可能超过120(一般情况),所以我们在获取年龄时就可以限定一个范围。
//j这样我们不仅保护数据的私密,也保证数据的正确
public void setAge(int age) {
if(age>=0&&age<=120){
this.age = age;
}else{
System.out.println("您输入的年龄有误");
}
}
构造方法
构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法。
//成员方法无static
public 类名称{
修饰符 类名称(参数){
}
}
注意事项:
1、构造方法的名称必须和所在类名称完全一样,就连大小写也要一样
2、构造方法不要写返回值类型,连void也不写
3、构造方法不能return一个具体返回值
4、如果没有编写任何构造方法,那么编译器将会默认赠送一个构造方法,没有参数、方法体什么也不做
推荐:无论怎样都自己手动写一个
5、一旦编写了至少一个构造方法,那么编译器将不在赠送
6、构造方法也是可以进行重载的(重载)方法名称相同,参数列表不同
完整代码:
public class person {
private int age;
private String name;
public person()
{
System.out.println("无参的构造方法");
}
public person(int age, String name) {
System.out.println("有参的构造方法");
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age>=0&&age<=120){
this.age = age;
}else{
System.out.println("您输入的年龄有误");
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}