1.封装的概念
(1)将东西包装在一起,然后以新的完整的形式呈现出来(即将属性和方法封装到类里面,通过添加访问修饰符来限制访问权限,以达到信息隐藏的目的) (2)信息隐藏:隐藏对象的实现细节,不让外部直接访问到 (3)将数据和方法包装进类中,加上具体实现的隐藏,共同被称作封装,其结果是一个同时带有特征和行为的数据类型。(定义类,定义其属性、方法的过程称为封装类) (4)信息隐藏是OOP最重要的功能之一,也是使用访问修饰符的原因。 (5)信息隐藏的原因包括: ①对模块的任何实现细节所做的更改不会影响使用该模块的代码 ②防止用户意外修改数据 ③使模块易于使用和维护 (6)访问修饰符: ①public(公开的):该类或非该类均可访问,权限最大 ②private(私有的):只有该类可以访问,权限最小 ③protected(受保护的):该类及其子类的成员可以访问,同一个包中的类也可以访问 ④默认:同一个包中的类可以访问 (7)属性封装的实现 ①修改属性的可见性来限制对属性的访问 ②为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于公开对这些属性的访问接口 ③在setter和getter方法中,根据需要加入对属性操作的限制
public class Demo { private String name; private int age;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { if (age < 22) { System.out.println(“错误!最小年龄应为22岁!”); this.age = 22; } else { this.age = age; } } } 注意:除非必须公开底层实现细节,否则应该将所有属性指定为private加以封装,让外界不能直接访问修改,只能对外界提供set/get方法。使用属性封装,通过增加数据访问限制,增强了类的可维护性。 (8)封装方法的目的: ① 隐藏方法实现细节(方法体),向外部提供公开接口(方法头),以供安全使用 ② 简化调用,方便修改维护 ③ 根据需要,可以私有化方法以供类内部使用 类的修饰符: 1.前缀修饰符(public,abstract,final) 2.后缀修饰符(extends,implements)
2.构造方法 (1)类的构造方法的概念和作用 构造方法负责对象初始化工作,为对象的属性赋合适的初始值。创建对象时,其类的构造方法确保在用户操作对象之前,系统保证初始化的进行。(即对属性进行初始化) (2)构造方法的语法规则 ① 构造方法名与类名相同 ② 没有返回类型 ③ 方法实现主要为字段赋初始值 (3)构造方法的调用 构造方法的调用很特别:通过new操作符(返回新建实例的引用),即创建对象的同时调用构造方法来对属性进行初始化。也就是在我们创建对象的时候自动调用的。注意:当我们在构造一个对象的时候,一定会调用构造方法,所以java系统保证每一个类都有构造方法。当一个类没有显示声明构造方法的时候,系统会有一个默认的无参构造方法。
3.this关键字 (1)this关键字的特点: ① 在类的方法中使用this关键字代表的是调用此方法的对象的引用(可以认为this和引用变量是同一个人,存的是同样的地址) ② this可以看做是一个变量,它的值是当前对象的引用 ③ 使用this关键字可以处理方法中的成员变量和形参同名的问题 ④ 当在方法内需要用到调用该方法的对象时,就可以用this ⑤ 在类的构造方法中可以调用this([参数列表])来调用该类的指定构造方法
public class Teacher { private String name = “”; private int age; private String city = “”;
public Teacher() { System.out.println(“这是一个无参的构造方法”); }
public Teacher(String name, int age, String city) { // 当一个构造方法去调用另一个构造方法的时候,对this的调用必须是该构造器中的第一条语句,因为要确保初始化的操作先被执行 // 构造方法中的this指的是正在被创建的对象 this(); this.name = name; this.age = age; this.city = city; }
// 同一个类中的方法去调用同一个类中的其它方法的时候,this可加可不加,不加时,程序在编译的时候会自动加上。 public String toString() { // 这里的this可以省略不写 return “名字:” + this.name + “,年龄:” + this.age + “,城市:” + this.city; } }
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/166607.html原文链接:https://javaforall.cn