Java基础第十天总结——面向对象(上)
目录:
一、面向对象特征之一:封装与隐藏
二、类的成员之三:构造器(或构造方法)
三、JavaBean
四、拓展知识:UML类图
五、关键字:this的使用
六、关键字:package、import的使用
/*--------------------黄金分割线-------------------------*/
一、面向对象特征之一:封装与隐藏
高内聚:类的内部数据操作细节自己完成,不允许外部干涉;
低耦合:仅对外暴露少量的方法用于使用;
隐藏对象内部的复杂性,只对外公开简单的接口。便于外接调用。通俗的说:把该隐藏的隐藏,该暴露的暴露,这就是封装性的涉及思想。
信息的封装和隐藏:
Java中通过将数据声明为私有private,再提供公共的public方法:getXx()和setXxx()实现对该属性的操作,以实现下述目的:
1.隐藏一个类不需要对外提供的实现细节
2.通过实现定制好的方法来访问数据,方便的加入控制逻辑,限制对属性的不合理操作
3.便于修改,增强代码的可维护性
四种访问权限修饰符:
二、类的成员之三:构造器(或构造方法)
构造器的特征:
具有与类相同的名称
不声明返回值类型(与声明为void不同)
不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值
构造器的作用:
创建对象;给对象进行初始化
如:Order o = new Order(); Person p = new Person("Peter",15);
语法格式:
根据参数不同,构造器可以分为如下两类:
隐式无参构造器(系统默认提供)
显式定义一个或多个构造器(无参、有参)
注意:
Java语言中,每个类都至少有一个构造器
默认构造器的修饰符与所属类的修饰符一致
一旦显式定义构造器,则系统不再提供默认构造器
一个类可以创建多个重载的构造器
父类的构造器不可被子类继承
构造器重载:
构造器一般用来创建对象的同时初始化对象。
构造器重载是的对象的创建更加灵活,方便创建各种不同的对象。
构造器重载,参数列表必须不同。
总结:
属性赋值过程先后顺序
1.默认初始化
2.显示初始化
3.构造器中初始化
4.通过“对象.属性”或“对象.方法”的方式赋值
赋值先后顺序:1-2-3-4
三、JavaBean——拓展知识
JavaBean是一种Java语言写成的可重用组件。
所谓JavaBean,是指符合如下标准的Java类:
1.类是公共的
2.有一个无参的公共的构造器
3.有属性,且对应的get、set方法
四、拓展知识:UML类图
五、关键字:this的使用
它在方法内部使用,即这个方法所属的对象的引用;
它在构造器内部使用,表示该构造器正在初始化的对象
this可以调用类的属性、方法和构造器
什么时候使用this关键字呢?
当在方法内需要用到调用该方法的对象的时,就用this。
具体的:我们可以用this来区分属性和局部变量。
如:this.name = name;
当形参与变量名同名的时候,需要用this
使用this访问属性和方法,如果在本类中未找到,会从父类中查找
注意:
可以在类的构造器中使用“this(形参列表)”的方式,调用本类中重载的其他构造器!
明确:构造器中不能通过“this(形参列表)”的方式调用自身构造器
如果一个类中声明了n个构造器,则最多有n-1个构造器中使用了“this(形参列表)”
“this(形参列表)”必须声明在类的构造器首行!
在类的一构造器中,最多只能声明一个“this(形参列表)”
六、关键字:package、import的使用
package语句作为Java源文件第一条语句,指明该文件中定义的类所在的包,格式为:
package 顶层包名.子包名;
包对应于文件系统的目录,package语句中,用“.”来指明包(目录)的层次;
包通常用小写单词标识,通常使用所在公司域名的倒置:com.atguigu.xxx
包的作用:
包帮助管理大型软件系统:将功能相近的类划分到同一个包中。比如:MVC的设计模式
包可以包含类和子类,划分项目层次,便于管理
解决类命名冲突的问题
控制访问权限
MVC设计模式
JDK中主要的包介绍:
关键字——import
为使用定义在不同包中的Java类,需要import语句来引入指定包层次下所需要的类或全部类(.*)。import语句告诉编译器到哪里去寻找类。
语法格式:
import 包名.类名;
注意:
1.在源文件中使用import显式的导入指定包下的类或接口
2.声明在包的声明和类的声明之间
3.如果需要导入多个类或接口,那么就并列显式多个import语句即可
4.举例:可以使用java.util.*的方式,一次性导入util下所有的包或接口
5.如果导入的类或接口是Java.lang包下的,或者是当前包下的,则可以省略此import语句
6.如果在代码中使用不同包下的同名类。那么就需要使用类的全类名的方式指明调用的是哪个类
7.如果已经导入java.a包下的类。那么如果需要使用a包的子包下的类的话,仍然需要导入。
8.import static组合的使用:调用指定类或接口下的静态的属性或方法