面向对象的四大特性之封装

前面一章讲到了面向对象的基本概念以及通过创建类的实例来表示现实中的对象,那么接下来介绍一下面向对象的四大特性:封装、继承、抽象、多态,在介绍四大特性之前需要引入访问修饰符这一概念,方便下面特性的介绍
访问修饰符包含如下几类:
private
default
protected
public
访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节
四者之间的关系可通过如下一张表表示
访问修饰符
简单来讲解一下图中的关系
(1)public: 用public修饰的类、属性及方法,包内及包外的任何类(包括子类和普通类)均可以访问;
(2)protected: 用protected修饰的类、属性及方法,同类、同包、不同包子类均可以访问;
(3)default: 如果一个类、属性及方法没有用任何修饰符(即没有用public、protected及private中任何一种修饰),则其访问权限为default(默认访问权限)。默认访问权限的类、属性及方法,包内的任何类(包括继承了此类的子类)都可以访问它,而对于包外的任何类都不能访问它(包括包外继承了此类的子类)。default重点突出包;
(4)private: 用private修饰的类、属性及方法,只有本类可以访问,而包内包外的任何类均不能访问它。
下面主要讲解特性之一:封装
背景:类是程序中的基本操作单元,而类与类之间会伴随着属性的访问和方法的调用
冲突:假如不加以限制,类与类之间的访问会很混乱,而且一个类的属性很容易被其他类修改
疑问:有没有一个机制或者约束来限制类和类之间的访问?
回答:
封装
目的:将类的数据隐藏起来,控制用户对类的修改和访问数据的程度(控制类中的属性随意被其他类修改,同时提供一个可以被其他类访问的方法,这样主动权就在自身手里了)
封装抽象图
那么如何实现这个所谓的封装呢?
封装的另外一个意思是私有化,英文是private,而私有化分为三种,类的私有化、属性的私有化、方法的私有化
具体的私有化可以参照如下示例:
第一类:属性私有化(属性封装)
public class Person{
private int number; -------①属性的私有化
public void setNumber(String number) { ------②给属性赋值
this.number = number;
}
public String getNumber() { ------③通过get方法提供对外可访问属性的路径
return number;
}
}
从上面可以看到:类中属性的私有化可通过两个步骤来实现
①通过private关键字来定义对应的属性变量
②提供对应的set、get方法来向外部提供可访问的该属性的途径
第二类:方法的私有化(方法封装)
public class Person{
private int number;
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
private void changeNumber() ------表示只有在本类中才可访问
{
System.out.println(“number:”+1);
}
public static void main(String[] args)
{
changeNumber();
}
}
第三类:类的私有化
private Class klass;
public Class getKlass() {
return klass;
}
public void setKlass(Class klass) {
this.klass = klass;
}

综上所述:封装主要针对成员属性的私有化,通过两步走可以实现其私有化过程
①通过关键字private来将属性私有化
②通过set、get方法来向外部提供可访问类中成员属性的方法

猜你喜欢

转载自blog.csdn.net/qq_32692795/article/details/89227103