接口 面向对象综合应用

接口

一、内容回顾

1、类型转换:

​ 装箱:向上类型转换、自动完成,把子类转换为父类的过程

​ 问题:只能访问父类里的成员,不能访问子类成员

​ Pet[] pets=new Pet[5];

​ 体现了LSP原则:里氏代换原则,方便编码

拆箱:向下类型转换、强制完成,把父类类型转换为子类类型的过程

​ 遍历数组,需要强转

​ 对象 instanceof 类型 判断该对象是否是某个类型,是:true 不是:false

​ 强制转换后,就可以访问子类对象成员

2、abstract 抽象的

​ 如果方法无法确定方法体,那么就不写方法体,{}也不写,这样的方法称为抽象方法

​ 抽象方法所在的类一定是抽象类,抽象类中可以没有抽象方法。

​ 抽象类不能被实例化,有构造方法,给属性赋值

​ 抽象类的作用:约束子类行为的作用,子类必须实现抽象类中的抽象方法

3、static静态的

​ 属性 方法 内部类 代码块

​ 在一个类中,static修饰的静态成员,存在于方法区中(属性在运行后就加载到了方法区,方法是在调用时加载方法区,都只加载一次,程序关闭后static消失),实例成员,在new时被加载到堆区中

静态成员对所有对象共享

访问静态成员的方式:类名.静态成员名 推荐

​ 静态成员名 不推荐

​ 对象名.静态成员名 不推荐

静态方法不能直接访问实例成员,必须先new对象,然后通过对象访问

​ 可以直接访问静态成员

实例方法可以直接访问静态成员

​ 可以直接访问实例成员

4、final最终的

​ 常量:赋值后,就不允许改变值的量,通常全用大写字母

​ 属性常量,在声明的同时必须赋值

​ 局部常量,先声明,再赋值

​ 最终方法:此方法将不能被重写

​ 最终类:不能被继承

二、今日内容

1、讲解作业

2、接口 的概念

3、接口的应用

4、工具类的应用

1、讲解作业

【技能点】子类中重写继承下来的方法,没有继承的方法不能重写

​ 构造方法:不能被重写

2、接口 的概念

继承是 is-a的关系
xxx同学是一个程序猿

学生类是子类,程序猿是父类

xxx具有踢足球的能力

问题:踢足球的方法放在程序猿类中合适吗?

​ 不合理,并不是所有程序员对象都会踢足球

使用接口解决上面的问题

接口是 has-a 的关系 有一个能力

子类 extends 父类 implements 接口1,接口2

接口中的成员:

属性:public static final

方法:public abstract

设计程序的时候,把继承的内容放置在父类中,还具备某个能力,但是这个能力不属于父类,那么就放在接口中

java继承的特点:类单继承,接口多实现

【说明】类实现接口后,要实现接口中的所有方法

设计接口有一个原则:接口分离原则—接口中的方法不要太多,是同一方向的方法

【分析】类和接口之间是实现关系implements,类可以实现多个接口

​ 接口之间是多继承的

【强调】接口不能被new ,接口无构造方法

【面试题】接口和抽象类的区别?

1、new 都不能被实例化,但是抽象类有构造方法,接口没有

2、从继承的角度,类是单继承的,接口是多继承、多实现的

3、从成员的角度,抽象类中可以有普通方法、属性、代码块,接口中只能有public static final的属性及public abstract的方法

【面试题】可以说接口是特殊的抽象类,在设计程序时,如何选择设计为抽象类还是接口呢?

从is-a has-a的角度来设计

接口可以用作引用类型,做类型后,限定只能访问接口中的成员

3、面向对象的综合应用

电子宠物系统

电子狗: name age love money strain eat() run() play()

电子猫:name age love money color eat() run() play()

电子企鹅:name age love money addr eat () swim() play()

主人:name money feed() play() buy() sale()

菜单类:

3个属性:存放所有宠物的数组

​ 存放自己宠物的数组

​ 主人属性

方法:循环打印菜单

​ 初始化所有宠物方法

功能

1、查看所有宠物

2、查看自己的宠物

3、喂养

4、买入宠物

5、卖出宠物

6、玩耍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隋zy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值