封装
封装的概念
将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来对隐藏的信息进行操作和访问。
为什么需要封装?
当我们创建一个类的对象后,我们可以通过“对象.属性”的方式,对对象的属性进行赋值。这里赋值操作要受到 属性的数据类型和存储范围的制约。除此之外,没有其他制约条件,但是,在实际问题中,我们往往需要给属性赋值加入额外的限制条件。这个条件就不能在属性声明时体现,我们只能通过方法进行限制性条件的添加。同时我们需要避免用户再使用“对象.属性”的方式对属性进行赋值,则需要将属性声明为私有的(private)。
封装的优点:
1. 良好的封装能够减少耦合。
立即学习“Java免费学习笔记(深入)”;
2. 类内部的结构可以自由修改。
3. 可以对成员变量进行更精确的控制。
4. 隐藏信息,实现细节。
封装的实现步骤
(1)将属性修改为private
(2)创建getter/setter方法,通过这两种方法对数据进行获取和设定,对象通过调用这两种发方法实现对数据的读写。
class person{ private int age;//修改属性为privatepublic int getAge(){ return age;}public void setAge(int a){ age = a; } }
封装 隐藏对象内部的复杂性,只对外公开简单的接口便于外部调用,封装性的体现,需要权限修饰符来配合。
Java中的包
Java中的包是为了更好的实现项目中类的管理,解决同名文件的冲突,提到java中的包那么我们就不得不提到package关键字,我们一般使用package声明类或接口所属的包,声明在源文件的首行,比如 package java.lang,每 . 一次就代表一层文件目录,同一个包下不能命名同名的接口,类,不同的包可以,对于包的使用则需要使用import关键字,在源文件中显示的使用import结构导入指定包下的类,接口,通常import声明在包的声明和类的声明之间,java中,包的名字规范是全小写的字母拼写
java中类的成员-构造器
任何一个类都有构造器,用来创建对象和初始化对象的属性,创建类的对象的方法:new+构造器,如 Person p = new Person();如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器
定义构造器的格式
总结:属性赋值的先后顺序:
1默认初始化
2显式初始化
3构造器中初始化
4通过“对象.方法”或“对象.属性”的方法,赋值
java中的this关键字
this关键字可以用来修饰:属性,方法构造器,this理解为:当前对象 或当前正在创建的对象
在类的方法中,我们可以使用“this.属性”或“this.方法”的方式,调用 当前对象属性或方法。但是通常情况下,我们都选择省略“this.”。特殊情况下,如果方法的形参和类的属性同名时,我们必须显示的使用“this.变量”的方式,表面此变量为属性。
在类的构造器也是一样,调用一个空参的构造器:this();调用有参数的 比如 public Person (int age) 就可以用 this(age)来进行调用,但是构造器中不能自己调用自己只能调用其他的构造器,如果有n个构造器,那么只有n-1个构造器可以使用this这样的方式来调用,且构造器this调用必须声明在构造器的首行,this也可以用来进行对象之间的比较大小。
public class Boy { private int age; public int getAge() { return age; } public void setAge(int a) { age = a; } public void compare(Boy boy) { if (this.age > boy.age) { System.out.println("YES"); } else if (this.age < boy.age) { System.out.println("No"); } }}