类的封装就是使用修饰符来限制成员变量和方法,使其他类不能随意修改或使用该类的成员变量和方法.
是为了避免对象对属性的赋值使用、方法的使用的随意性,对类进行限制,避免出现意料外的结果.
权限修饰符总结:
//总结:Public:不管是同类不同类 是不是一个包下的类,都可以使用
//protect:供本类与子类还有本包的其他类使用,只要是继承与该类的类(不管是不是同一个包)或同一个包的其他类,就可以使用该类的protect方法
//default:供本包的类使用,本类与同一个包的其他类可以使用该类的default方法
//private:供本类使用,只有本类可以使用private方法
类的基本封装:
一般来说,把成员变量设置为私有之后,就会给类创建赋值和取值的方法:get和set方法.
可以在其中对成员变量的值加以限制.
例如:
public class Student { private String name; private int id; public void setName(String name) { this.name=name; } public String getName() {、 return this.name; } public void setID(int id) { if(id>=10000)//在get方法中可以自己设置类似的条件,防止成员变量的值不是理想的 { System.out.println("id输入错误"); } else { this.id=id; } } public int getID() { return this.id; } }
这样提高了属性的访问安全性
属性的验证赋值
就像是刚刚的例子里中的setID,假如id最大10000号, 如果未对它的赋值进行验证的话,在使用的时候可能会出现逻辑错误.
所以尽量在成员变量所对应的Set函数中进行验证型赋值.
this关键字
在类的方法中,一般用this代表调用了那个方法的对象,像是上面的例子,如果set方法中,不使用this关键字的话,
会变成name=name,这时俩个id都是局部变量,因此想给该对象的成员变量name赋值将不会成功,当然也可以给参
数其他的名字,比如name1之类的,但是一般不介意这样做.
构造方法
为了在创建对象的时候就明确对象的属性值,比如学生入学的时候就要明确他的姓名、年龄等信息,所以就有了构造方法该功能.
语法:
修饰符 构造方法名(参数列表){代码块}
特点:
1、构造方法没有返回值,所以并不需要写返回值类型
2、构造方法的名字必须和类名一模一样
3、构造方法在构造该类的对象时执行(也就是在使用new的时候),创建完对象,方法执行就结束.
this调用构造方法:
普通的方法可以通过方法名直接调用,但是构造方法需要需要使用this关键字调用.这样可以给对象进行重新初始化
语法:
this(参数列表);
课后习题:
1、构造方法和普通的成员方法有什么区别?
构造方法没有返回值和返回类型,一般被用作对象初始化,在对象创建的时候自动调用,并且构造方法名必须和类名完全一样
普通的成员方法一般是为了实现某个功能而写,可以有返回值,必须有返回类型.
2、类的封装的好处是什么?
具有安全性,不用担心成员变量赋值时与使用时的随意性产生意料之外的逻辑错误.提高了程序的复用性,保护了私有数据,减少了可能的模块间的干扰,降低了程序复杂性、提高了程序可控性.