Java中的封装性(包含this关键字,构造器等)
作者:ice-Hamster
一、封装性的含义
封装性的作为java面向对象思想的三大特征之一。
从字面上看,就是将一部分的东西整合成一个整体。
用专业的术语来讲,可以理解为:隐藏对象内部的复杂性,只对外公开简单的接口。
(通俗来讲封装性的设计思想:把该隐藏的隐藏起来,该暴露的暴露出来)
二、封装性的作用
①提高了代码的复用性。
②提高了代码的安全性。(利用private访问控制符,让访问权限降到最低,从而提高安全性)
③降低了代码的复杂程度。(将复杂的内部细节全部进行封装,只留下简单的接口,通过接口进行对方法的调用。)
三、封装性的体现
在了解实现分装性前我们要先了解Java的四种权限修饰符。
3.1、四种权限修饰符的介绍
Java权限修饰符 public、protected、default、private 可以放置在类的成员对象定义前
4 种权限用来修饰类及类的内部结构:属性、方法、构造器、内部类 (不同权限的访问权限如下:)
注意:class 的权限修饰只可以用public 和 default(缺省)。
3.2、分装性具体的实现
我们将类的属性私有化(private)同时,要提供公共的(public)getxxx和setxxx方法来获取和输出值。(示例代码如下)
package cn.spilt_charging.contact; public class Animal { public static void main(String[] args) { animals animals = new animals(); animals.name = "小白"; //animals.age = 10; //无法直接调用(age为私有性) //animals.legs = 4; //无法直接调用(legs为私有性) animals.setAge(10); //通过权限为public的setAge()方法录入age的值 animals.setLeg(4); //通过权限为public的setLeg()方法录入legs的值 System.out.print("这只动物的名字叫做:" + animals.name + ",年龄为:" + animals.getAge() + "岁," + "有" + animals.getLeg() + "条腿"); //相对应的私有性的age和legs要分别使用getAge()、getLeg()方法输出。 } } class animals{ String name; //动物的名字 private int age; //动物的年龄(私有性) private int legs; //动物的腿的个数(私有性) public void setLeg(int legs) { //legs对应的set方法 this.legs = legs; } public int getLeg(){ //legs对应的get方法 return legs; } public void setAge(int age) { //age对应的set方法 this.age = age; } public int getAge() { //age对用的get方法 return age; } }
(代码中涉及到了Java的构造器和this关键字,下面会一一进行介绍)
四、构造器的解释
4.1、构造器的作用
①创建对象
②初始化对象的属性
4.2、注意事项
①如果没有显示的定义类的构造器的话,则系统默认提供一个空参的构造器。
②定义构造器的格式:权限修饰符 类名(形参列表){}
③一个类中定义的多个构造器,彼此之间会构成重载。
④一旦显示的定义类的构造器后,系统就不会再提供默认的空参构造器。
⑤一个类中,至少有一个构造器。
4.3、构造器的举例说明
(这些都是构造器)
public animals() { System.out.print("......."); } public animals(String name) { name = name; } public animals(String name,int age) { name = name; age = age; }
就3.2的代码来说,下面代码中 animals()就是构造器
animals animals = new animals();
五、this关键字的使用
this 用来修饰、调用:属性、方法、构造器
5.1、this修饰属性和方法
this 理解为:当前对象 , 或当前正在创建的对象。
①在类的方法中,我们可以使用 "this. 属性 " 或 "this. 方法 " 的方式,调用当前对象属性或方法。通常情况下,我们都选择省略“this.”。特殊情况下,如果方法的形参和类的属性同名,我们必须显式的使用 "this. 变量 " 的方式,表明此变量是属性,而非形参。
②在类的构造器中,我们可以使用 "this. 属性 " 或 "this. 方法 " 的方式,调用正在创建的对象属性和方法。但是,通常情况下,我们都选择省略“this.”。特殊情况下,如果构造器的形参和类的属性同名,我们必须显式的使用 "this. 变量 " 的方式,表明此变量是属性,而非形参。
5.2、this 调用构造器
① 我们可以在类的构造器中,显式的使用 " this( 形参列表 ) " 的方式,调用本类中重载的其他的构造器!
② 构造器中不能通过 "this ( 形参列表 ) " 的方式调用自己。
③ 如果一个类中有 n 个构造器,则最多有 n -1 个构造器中使用了"this ( 形参列表 )"。
④ 规定: " this( 形参列表 ) " 必须声明在类的构造器的首行!
⑤ 在类的一个构造器中,最多只能声明一个 "this( 形参列表 )",用来调用其他构造器。
5.3、this的举例
如3.2的代码所示:
public void setLeg(int legs) { //legs对应的set方法 this.legs = legs; } public void setAge(int age) { //age对应的set方法 this.age = age; }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。