网站首页 > 技术文章 正文
众所周知于谦有三大爱好:抽烟、喝酒、烫头,面向对象也有三大特性:封装、继承和多态。
1.封装
1.1为什么使用封装
该段程序可以使用,但在数据的安全上存在隐患,对属性中的数据可以随时改变
直接使用对象操作属性,可能会产生一些隐患
1.2 使用封装修改以上程序:
为属性添加getter和setter方法
在方法内部进行存取限制:
1.3封装的步骤:
1、修改属性的访问权限:将属性的访问权限修改为private(私有的,只能当前类使用)
2、为属性添加相关的公共操作方法:增加getter和setter方法(这两个方法为标准的JavaBean方法)
3、在getter和setter方法内部实现数向的存取限制操作
1.4 封装的好处:
(1) 隐藏数据,外部不能直接操作属性
(2) 便于数据的传递
一个类中可以定义多个构造方法
2.继承
存在继承关系的实体一般具有is-a的关系(谁是谁的关系)
在继承关系中,父类更加通用,子类更加具体,父类是所有子类共性的抽象
在开发中使用继承可以大大简化代码量
2.1 Java中的类使用的是单继承机制,但Java使用接口弥补了单继承机制的不足
2.2 Java中使用extends关键来实现继承
2.4 当一个类继承了一个父类后,则该类自动拥有父类中所有的非私有的属性和方法
2.5 继承在执行时,必须先创建父类对象然后才能创建子类的对象
2.5.1Java中创建对象必须调用构造方法
父类显式的定义了带有参数的构造方法后,默认的无参数的构造方法自动消失,子类就必须在子类的构造方法中显式的调用父类的有参数的构造方法
super()调用父类的构造方法,而且该调用必须存在与子类构造方法的第一行
super关键字在子类中表示父类对象的一个引用
继承的好处:
1. 提高代码的复用度,降低代码量
2. 让类与类之间的结构性更强
继承的缺点
1. 违反了高内聚,低耦合的原则
3.多态
3.1方法重写(Override)
方法重写存在于子父类之间,子类中的某个方法重写父类中的某个方法
Java中不存在属性的重写和构造方法的重写
重写规则:
方法的声明部分一致(含,方法的返回类型一致,方法的方法名一致,方法的参数列表一致,方法的异常抛出一致,但方法的访问权限可以不一致<子类的权限不能小于父类的权限>),方法体不一致
3.2方法重写的好处
方法重写是Java中实现多态的一种表现形式
3.3多态的简单使用
多态:同一类对象在相同环境下根据具体使用的对象不同具有不同的操作
在存在子父类关系的类中,如果使用父类声明,子类对象做为具体值
Teacher t = new JavaTeacher("弓长","某某大学");
对象t能够调用到的方法必须是父类中已声明的方法,但在执行期运行的方法如果子类重写了父类中的方法则执行子类中的方法,如果子类没有重写父类中的方法则执行的还是父类中的方法
3.4多态的好处:
1. 提高系统的可维护性
2. 提高系统的可扩展性
3. 提高系统的灵活性
猜你喜欢
- 2024-10-27 从bitmap到布隆过滤器,再到高并发缓存设计策略
- 2024-10-27 强大 WebView2 + 不用写 JavaScript 的 htmx.js 「小轻快」开发桌面程序
- 2024-10-27 《JSP》第13节:JSP中的四大作用域介绍
- 2024-10-27 Java,FreeMarker,模板引擎,通过案例代码,学懂模板引擎
- 2024-10-27 教你分析9种 OOM 常见原因及解决方案
- 2024-10-27 可动态调节参数的线程池实现(动态调试工具有哪些)
- 2024-10-27 Java,基本类型和引用类型,强引用、软引用、弱引用、虚引用
- 2024-10-27 深入理解Java:类加载机制及反射(java常见类加载器)
- 2024-10-27 JVM系列-6.javap指令介绍(jvm调优)
- 2024-10-27 Java 泛型使用(类、方法、接口协议、类型通配符、通配符上下限)
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)