多态/接口

回顾:
1.static final常量
2.抽象方法:
abstract,只有方法的定义,没有方法的实现
3.抽象类:
abstract修饰
包含抽象方法的类必须是抽象类
不能被实例化
需被继承,子类:
1)重写父类的所有抽象方法----变不完整为完整
2)也声明为抽象的
意义:
1)父类的意义:
1.1)封装公共的,代码的重用
1.2)为所有子类提供一个公共的类型,向上造型
2)包含抽象方法,为所有子类提供一个统一的入口
4.接口:
是一个标准、规范
interface定义
只能包含常量和抽象方法
不能被实例化
需要被实现(implements)的,实现类:
必须重写接口中所有抽象方法
可以实现多个接口,用逗号分隔
若既继承又实现时,先继承后实现
接口间可以继承

 


class Dog{
String name;
int age;
}
class Person extends Dog{ //不合理的
}

Person p1 = new Person();
p1.name = "";
p1.age = 26;

 

 

 

 

 

 

继承是为了实现代码重用,但不能为了重用随意继承,
继承要符合is a的关系

class Student extends Person{
}
class Teacher extends Person{
}
class Doctor extends Person{
}

继承要符合is a的关系
class Six extends Shape{
public Six(double c){
this.c = c;
}
public double area(){
return 0.0721*c*c;
}
}

interface CCB extends UnionPay{
public void payFire();
}
class CCBImpl implements CCB{
重写4个方法
}

接口不包含构造方法,抽象类可以包含构造方法

1.构造方法初始化成员变量
2.不能包含普通方法

 


NstInnerDemo

 

 

有一个类就会有一个字节码文件

问:匿名内部类有独立的.class吗?------有

NstInnerDemo$1.class
NstInnerDemo$2.class
Mama$Baby.class

 

 

正课:
1.多态:多种形态
1)多态的意义:
1.1)同一类型的引用指向不同的对象时,有不同的实现
---------cut()、run()-----行为的多态
1.2)同一个对象被造型为不同的类型时,有不同的功能
---------我、水---------对象的多态
2)向上造型:
2.1)父类型的引用指向子类的对象
2.2)能向上造型的类型有: 父类、所实现的接口
2.3)能点出来什么,看引用的类型
3)强制类型转换,成功的情况有两种:
3.1)引用所指向的对象,就是该类型
3.2)引用所指向的对象,实现了该接口
4)强转失败会发生类型转换异常(ClassCastException),
强转之前最好通过instanceof来判断引用所指向的对象是否是该类型,
instanceof返回true或false,强转成功的条件就是instanceof为true的条件
2.面向对象三大特征:
1)封装:
1.1)类:封装的对象的数据和行为
1.2)方法:封装的是具体的业务实现细节
1.3)访问控制修饰符:封装的是访问的权限--保护数据
2)继承:
2.1)目的:代码的重用
2.2)父类:共有的 子类:特有的
继承后子类具有:父类的和子类的
2.3)单一继承,传递性
3)多态:
3.1)意义: 行为的多态、对象的多态
3.2)向上造型、强制类型转换、instanceof
3.3)表现形式: 重写(override)、重载(overload)
3.面向对象课程内容总结:
1)第一天:
1.1)什么是类?什么是对象?
1.2)如何创建类?如何创建对象?如何访问类成员?
1.3)引用类型之间画等号
1.4)null和NullPointerException
2)第二天:
2.1)方法的重载
2.2)构造方法
2.3)this关键字
2.4)引用类型数组
3)第三天:
3.1)java内存管理:堆、栈、方法区
3.2)继承
3.3)super关键字
3.4)向上造型
4)第四天:
4.1)方法的重写、重写与重载的区别
4.2)package、import
4.3)访问控制修饰符
4.4)static
4.5)final
4.6)static final常量
5)第五天:
5.1)抽象方法
5.2)抽象类
5.3)接口
6)第六天:
6.1)多态: 向上造型、强制类型转换、instanceof
6.2)成员内部类、匿名内部类

 

任务:
1.农行ATM系统完善
2.自己对面向对象总结
3.课后作业:只做第一题
4.每日一练
5.运行Shoot项目----了解需求

 

 

 

 


农行ATM机系统
要求:
1.所有卡都能插
2.只有农行卡才能支付电话费

判断卡的类型-------instanceof

 

走心

 

 

 

 

 

 


ATM机只是提供了一个入口(按钮),
实际操作的还是那个卡

 

 

 

 

 

 

 

 

 

 

 

UnionPay-----所有行
ICBCImpl-----工行卡
ICBC-----------工行
ABCImpl------农行卡
ABC------------农行

 

 

 

 


Aoo o1 = new Boo(); //向上造型
Boo o2 = (Boo)o1; //强制类型转换-----成功
Inter1 o3 = (Inter1)o1; //强制类型转换-----成功
Coo o4 = (Coo)o1; //强制类型转换-----失败

if(o1 instanceof Coo){
Coo o4 = (Coo)o1;
}

 

 

 

System.out.println(o1 instanceof Boo); //true
System.out.println(o1 instanceof Inter1); //true
System.out.println(o1 instanceof Coo); //false

interface Inter1{
}
class Aoo{
}
class Boo extends Aoo implements Inter1{
}
class Coo extends Aoo{
}

 

 

 

 

 


子类小,父类大

人 p1 = new 理发师(); //小到大
人 p2 = new 外科医生(); //小到大
理发师 p3 = new 人(); //大到小

 

 

 

 

 

 

 

子类中的东西,多于等于父类的


我 me = new 我();
me.讲课()/揍他()/咬他()/收工资()
讲师 p1 = me; //向上造型
p1.讲课();
孩子他妈 p2 = me;
老公的老婆 p3 = me;

p1.讲课();
p2.揍他();
p3.咬他();
p3.收工资();


interface 讲师{
讲课();
}
interface 孩子他妈{
揍他();
}
interface 老公的老婆{
咬他();
收工资();
}
class 我 implements 讲师,孩子他妈,老公的老婆{
讲课(){}
揍他(){}
咬他(){}
收工资(){}
}

 

 

 

 

 

 

 


人 p1 = new 理发师(); //向上造型
人 p2 = new 外科医生();
人 p3 = new 演员();

p1.cut();--------剪发
p2.cut();--------开刀
p3.cut();--------停止表演

abstract class 人{
abstract cut();
}
class 理发师 extends 人{
cut(){ 剪发 }
}
class 外科医生 extends 人{
cut(){ 开刀 }
}
class 演员 extends 人{
cut(){ 停止表演 }
}

 

 

 

 

 

 

 


设计原则:
1.将多个类公共的东西抽到父类中
2.若所有子类行为都一样,做成普通方法
若所有子类行为不一样,做成抽象方法
3.符合既是也是的关系时,使用接口

 


需求:
达内讲师-----------解决问题()、培训员工()、编辑稿件()
达内教学副总裁--解决问题()、培训员工()、编辑稿件()
韩总-----------------解决问题()、培训员工()、编辑稿件()
项目经理-----------编辑稿件()

interface 企业技术顾问{
解决问题();
培训员工();
}
interface 技术图书作者{
编辑稿件();
}
abstract class 达内职员{
姓名、年龄、薪酬
上班打卡(){ 按指纹、拍照 }
下班打卡(){ 按指纹、拍照 }
abstract 完成工作();
}
class 达内讲师 extends 达内职员 implements 企业技术顾问,技术图书作者{
}
class 达内项目经理 extends 达内职员 implements 技术图书作者{
}
class 达内班主任 extends 达内职员{
}

 

转载于:https://www.cnblogs.com/xiaziteng/p/4733414.html

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值