面向对象
面向对象学习的三条主线:
-
Java类及类的成员:属性、方法、构造器;代码块、内部类
-
面向对象的三大特征:封装、继承、多态、(抽象)
-
其它关键字:this super static final abstract interface package import
面向过程与面向对象
面向过程POP:强调的是功能行为,以函数为最小单位,考虑怎么做
面向对象OOP:强调具备了功能的对象,以类/对象为最小单位,考虑谁来做
类和对象
类:是对一类事物的描述,是抽象的
对象:是实际存在的该类事物的每个个体
设计类,就是设计类的成员
属性=成员变量=filed
方法=成员方法=函数=method
内存解析
堆:存放对象实例
栈:存储局部变量
方法区:存储类信息、常量、静态变量、实时编译的代码
属性
属性(成员变量):直接定义在类的一对{}内
局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部变量
关于权限修饰符:
-
属性:可以在声明时,使用权限修饰符
常用的包括:private public protected -->封装性
-
局部变量:不可以使用权限修饰符
关于默认初始化值
-
属性:根据其类型,都有默认初始化值
-
局部变量:没有默认初始化值
在内存中加载的位置:
-
属性:堆
-
局部变量:栈
方法
方法的声明:权限修饰符 返回值类型 方法名(形参列表){
方法体
}
说明:
-
如果方法中有返回值,必须在方法声明中,指定返回值的类型,同时,方法中需要使用return关键字来返回指定类型的变量或常量
-
方法的使用中,可以调用当前类的方法和属性
匿名对象
new 对象类型();
new 对象类型().方法();
new 对象类型().属性;
匿名对象只能调用一次
方法的重载
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同
可变个数的形参
-
格式:数据类型...变量名
-
当调用可变个数的形参的方法时,传入的参数可以是0个,1个,……
-
可变个数形参的方法与本类中方法名相同,形参类型也相同的数组不共存
-
必须声明在末尾
方法参数的值传递机制
关于变量赋值:
-
如果变量是基本数据类型,此时赋值的是变量所保存的数据值
-
如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值
方法的形参的传递机制:值传递
-
如果参数是基本数据类型,此时实参赋给形参的是,实参真是存储的数据值
-
如果参数是引用数据类型,此时实参赋给形参的是,实参存储数据的地址值
封装与隐藏
高内聚:类的内部数据操作细节自己完成,不允许外部干涉
低耦合:仅对外暴露少量的方法用于使用
将类的属性私有化,同时提供公共的方法来获取(get)和设置(set)属性的值
-
快捷键 alt +insert
Java规定的4种权限修饰符:private 、缺省 、protected 、public
可以用来修饰属性、方法、构造器、内部类
修饰类只能用public、缺省
构造器的使用
-
创建类的对象:new + 构造器
如果没有显式定义构造器,系统默认提供一个空参的构造器
定义格式:权限修饰符 类名(形参列表){}
-
初始化对象的属性----通过形参传值
-
一个类中定义了多个构造器,彼此构成重载
-
一旦显式定义了构造器,系统不再提供默认的空参构造器
-
快捷键 alt + insert
属性赋值的先后顺序
-
默认初始化
-
显式初始化
-
构造器中赋值
-
通过 对象.方法 或 对象.属性 赋值
JavaBean
一种Java语言写成的可重用组件,符合如下标准的Java类:
-
类是公共的
-
有一个无参的公共构造器
-
有属性、且有对应的get、set方法
this关键字
this可以用来修饰属性、方法、构造器
this修饰属性和方法:this理解为当前对象
this调用构造器
-
我们在类的构造器中,可以显式的使用 this.(形参列表) 的方式,调用本类中指定的其他构造器
-
构造器中不能通过 this(形参列表)调用自己
-
this(形参列表)必须声明在当前构造器的首行
-
构造器内部,最多只能声明一个this(形参列表)
pakage关键字
-
为了更好的实现项目中的类的管理,提供包的概念
-
使用package声明类或接口所属的包,声明在源文件的首行
-
包,属于标识符,遵循标识符的命名规则
-
每 ". " 一次,就代表一层文件目录
-
同一个类,不能定义同名的类或接口
-
java.lang Java语言的核心类
-
java,net 与网络接口相关的类与接口
-
java.io 输入/输出的类
-
java.util 实用工具类
-
java.text 格式化的类
-
java.sql JDBC数据编程的相关类或接口
-
java.awt 抽象窗口工具集
MVC设计模式
三个层次:视图层(view)、控制层(controller)、模型层(model)
import关键字
-
在源文件中显式的使用import导入指定包下的某个类、接口
-
如果使用的类或接口是java.lang下定义的,可以省略
-
如果在源文件中使用了不同包下的同名类,则必须至少一个以全类名的方式显示