面对对象
1.面对对象三大特征
1.封装
1.1 权限封装
权限 可见度 同包同类 同包异类 异包子类 异包异类
public ok ok ok ok
protected ok ok ok no
default(包权限) ok ok no no
private ok no no no
1.2 数据封装
实体类get/set
viewObject 视图模型类
ModelObject 数据模型类
Dto类 数据传输对象
最初只是封装属性
方法的参数和返回值也可以使用实体类进行封装
1.3 包封装
Java中的包就是文件夹
使用文件夹的层数和名称进行类文件的封装
包名用点分割
包一般最少3层 最多不超过7层
包名的前两层 是你们公司域名的倒置
com.njbdqn
第3层是项目名称 (迷你工程、练习)
com.njbdqn.myfirst
第4层是模块的名称(正常多人开发的工程 最常见的包)
com.njbdqn.myfirst.ordermode
第5层是接口实现(实现四层包中的功能接口的下层包)
com.njbdqn.myfirst.ordermodel.impl
第6层是中间件层(容器层)--半架构师
第7层是容器的链路层---petshop
防止类名冲突
1.4 接口封装 (广义封装)
--项目经理 架构师
interface
模块接口
2.继承
2.1 继承与组合的区别
组合是将 一方的类作为另一方的属性存在 是一种弱依赖关系 (推荐)
继承 使用 extends 子类继承父类中的 public和protected的属性和方法 不用重复去造轮子 子类如果要
调用父类的属性或方法一般使用super关键字
2.2 继承的单根性
Java的继承只能单根继承
3.多态
3.1 多态在代码中的表现
3.1.1 重写
在继承关系的类中 子类的方法与父类的方法一样(参数列表一样,方法名一样,返回值一样,子类的权限大于等于父类的权限) 而且
子类实现了与父类相同方法的不能功能
3.1.2 重载
在同一个类中 方法名一样 参数列不一样(参数个数不一样,参数类型不一样,参数类型的次序不一样)
3.2 上下转型问题
将子类对象存放在父类的对象中 JVM的类型判断实际上还是子类对象 不可乱转
将方法的参数使用父类做形参,传入的时候使用任意一个子类做实参 也是一种上转型
拆箱和装箱 (衍生问题) C#
将非对象的元素转为对象元素
Integer,Double,Long(包装类)
2. 特殊关键字
2.1 final(最终)
2.1.1 final 使用在类前面 表示该类为最终类 不能继承
2.1.2 final 可以用在方法前 表示该方法在子类中不允许重写
2.1.3 final 可以使用在属性前 表示该属性为常量属性
注:final定义的变量 在内存中一般存在常量池中
2.2 static(静态)
2.2.1 static 可以使用在属性前 代表该属性是本类中所有对象公用的独一无二的属性 (类属性)
2.2.2 static 可以使用在方法前 代表同上 (类方法)
2.2.3 static 代码块 静态代码块 这种代码块优先于构造器先执行 并且只执行一次
2.3 this(代指当前对象)
注:对象是类的具象化实现 类是对象的高度抽象
3. 抽象
3.1 抽象类 (使用时机)
使用时机:如果多个类中有同样的方法则把这些方法提取到父类中 ,且多个类中有方法原型相同但内容不同的
则将这些方法在父类中构建抽象方法 并把父类变成抽象类
注:抽象类中有可能有抽象方法 所以抽象类不能直接new
3.2 接口 (使用时机)
使用时机:解耦 (规则化 约束)
4. 异常和日志
4.1 主动抛出和被动捕获
4.2 log4j
java面向对象的概要
最新推荐文章于 2025-05-12 22:17:19 发布