目录
- 友情提醒
- 一、Java面向对象的三大特性之封装
- 1)概念和好处
- 2)封装案例
- ①访问权限修饰符(private)
- ②构造方法与gette&setter方法
- ③具体的封装案例
友情提醒
先看文章目录,大致了解知识点结构,直接点击文章目录可以跳转到文章指定位置。
一、Java面向对象的三大特性之封装
1)概念和好处
①设计思路:实例化对象时,个别成员属性或者成员变量我们不希望被外界直接访问,我们把对象的属性和操作包装起来,并尽可能隐藏对象的内部实现细节,但同时会提供一些公共的接口(就是方法),来支持对它们的操作。
②好处:封装实际上就是使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。 适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性。
③如何实现:通过关键字private,protected和public实现封装。
2)封装案例
①访问权限修饰符(private)
对于类的成员(包括成员属性和成员方法)而言,其能否被其他类所访问,取决于该成员的修饰词。
①其中public成员属性可以被任何类访问和使用。可以通过类名.成员属性的方式来访问public成员变量。
②protected成员属性只能在类内部和子类中使用。在子类中,可以通过super关键字来访问父类的protected成员属性。
③(如图)
④private成员属性只能在类内部使用,要访问private成员属性必须通过类提供的公共方法getter&setter来访问。
②构造方法与gette&setter方法
①构造方法可以初始化private修饰的变量
②但是后续访问,必须使用公共的接口(就是getter&setter方法),来支持对它们的操作。
public class BmsBoy {
//属性
private String name;
private int age;
//构造方法
public BmsBoy(String name,int age){
this.name = name;
this.age = age;
}
public BmsBoy(){
}
public void printInfo(){
System.out.println("姓名:" + name + "年龄:" +age );
}
}
getter&setter方法的格式:
getter方法:
public 返回值类型 get属性名(){
return 属性名;
}
setter方法:
public void set属性名(数据类型 形参名){
属性名 = 形参名;
}
③具体的封装案例
使用private私有化属性后,提供getter&setter方法访问此属性。
class Person
{ String name;
private int age; //age属性被私有化了 --> 理解:被隐藏起来,只能在本类中被使用
/*
正常的实例化对象完毕后,我们可以通过对象名.属性名的方式为对象属性进行赋值操作;
赋值的数据内容可能违背生活逻辑的值(不合理的数据) --> 数据存在安全隐患
我们就考虑没收外界对象名.属性名赋值的权利 --> 将属性私有化即可(private修饰属性)
我们需要在当前类的内部提供外界访问属性的方式(公共的方法) --> getter&setter方法
getter&setter方法的格式如下:
getter方法:
public 返回值类型 get属性名(){
return 属性名;
}
setter方法:
public void set属性名(数据类型 形参名){
属性名 = 形参名;
}
*/
//getter方法
public int getAge(){
return age;
}
//setter方法
public void setAge(int a){
//如果有需要,则可以进行数据合理性的校验
if(a <= 0 || a > 120 ){
System.out.println("年龄不合理...");
}else{
age = a;
}
}
}