当我们创建一个类的对象以后,我们可以通过"对象,属性"的方式,对对象的属性进行赋值。这里,赋值操作要受到属性的数据类型和存储范围的制约。除此外,没有其他制约条件。但是,在实际问题中,我们往往需要给属性赋值加入额外的限制条件。这个条件就不能在属性声明时体现,我们只能通过方法进行限制条件的添加。(比如:Set方法)
同时,我们需要避免用户再使用"对象,属性"的方式对属性进行赋值。则需要将属性声明为私有的(private)
————————>此时,针对于属性就体现了封装性。
我们将类的属性xxx私有化(private),同时,提供公共的(public)方法来获取(getXxx)和设置(setXxx)
拓展:封装性的体现:①如上②不对外暴漏的私有方法③单例模式。。。。。。
三、封装性的体现,需要权限修饰符来配合。-
Java规定的4种权限(从小到大排列):private、缺省、protected、public
-
4种权限可以用来修饰类及类的内部结构:属性、方法、构造器、内部类
-
具体的,4种权限都可以用来修饰类的内部结构:属性、方法、构造器、内部类
修饰类的话,只能使用:缺省、public
封装性的总结:Java提供了四种权限修饰符来修饰类及类的内部结构,体现类及类的内部结构在调用时可见性的大小
练习1.创建程序,在其中定义两个类:Person和PersonTest类。定义如下:用setAge()设置人的合法年龄(O~130),用getAge()返回人的年龄在PersonTest类中实例化Person类的对象b,调用setAge()和getAge()方法,体会Java的封装性。
Person类
public class Person {
private int age;
public int getAge(){
return age;
}
public void setAge(int a){
if(a>0&&a<130){
age=a;
}else {
age=-1;
}
}
}
PersonTest类
public class PersonTest {
public static void main(String[] args) {
Person person = new Person();
person.setAge(40);
if(person.getAge()>0){
System.out.println(person.getAge());
}else {
System.out.println("年龄不符合要求!!!");
}
}
}
构造器
别称:构造方法、constructor
构造器的作用创建对象
初始化对象信息
说明- 如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器
- 定义构造器格式:权限修饰符 类名(形参列表){}
- 一个类中定义多个构造器,彼此构成重载
- 当一个类中定义了有参构造器,那么系统将不会在提供无参构造器
- 一个类必须含有至少一个构造器
3.编写两个类,TriAngle和TriAngleTest,其中TriAngle:类中声明私有的底边长base和高height,同时声明公共方法访问私有变量。此外,提供类必要的构造器。另一个类中使用这些公共方法,计算三角形的面积。
TriAngle类
public class TriAngle {
private int base;
private int height;
public int getBase() {
return base;
}
public void setBase(int base) {
this.base = base;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public TriAngle() {
}
public TriAngle(int b, int h) {
base = b;
height = h;
}
public int area(TriAngle t) {
return t.getBase() * t.getHeight() / 2;
}
}
TriAngleTest类
public class TriAngleTest {
public static void main(String[] args) {
TriAngle triAngle = new TriAngle(5, 6);
System.out.println(triAngle.area(triAngle));
}
}
总结:属性赋值的先后顺序
-
默认初始化
-
线性初始化
-
构造器赋值
-
通过“对象.方法”或“对象.属性”进行赋值
1–2–3–4
JavaBean是一种Java语言写成可重用组件
所谓的JavaBean,是指符合如下标准的Java类
》类是公共的
》有一个无参的公共的构造器
》有属性,且有对应的get set方法
this this关键字的使用:this可以用来修饰:属性、方法、构造器
this修饰属性和方法:
this理解为:当前对象或当前正在创建的对象
2.1
在类的方法中,我们可以使用"this.属性"或"this.方法"的方式,调用当前对象属性或方法。但是通常情况下,我们都选择省略"this."。特殊情祝下,如果方法的形参和类的属性同名时,我们必须显式的使用"this.变量"的方式,表明此变量是属性,而非形参。
2.2
在类的构造器中,我们可以使用"this.属性"或"this.方法"的方式,调用当前正在创建的对象属性或方法,但是通常情况下,我们都选择省略"this."。特殊情祝下,如果构造器的形参和类的属性同名时,我们必须显的使用"this.变量"的方式,表明此变量是属性,而非形参。
this调用构造器@我们在类的构造器中,可以显式的使用"this(形参列表)"方式,调用本类中指定的其他构造器
②构造器中不能通过"this(形参列表)“方式调用自己
@如果一个类中有n个构造器,则最多有n-1构造器中使用了"this(形参列表)”
@规定:"this(形参列表)“必须声明在当前构造器的首行
⑤构造器内部,最多只能声明一个"this(形参列表)”,用来调用其他的构造器



