首先,我没想到我连标题都能打错,真是不好意思。本人以后会多加注意这些问题(话说健忘这种问题怎么可能解决啊喂 [○・`Д´・ ○] )。前两天双休日,所以为什么没有更新大家懂的都懂,不懂得也不给你说,哼╭(╯^╰)╮。

直接上今天的笔记:

抽象与接口:
抽象类(abstract class):
1.抽象类针对的是类,接口针对的是行为(方法)
2.当对于对象描述模糊时,他的类便可以定义为抽象类
3.抽象类中可以没有抽象方法,但有抽象方法的一定是抽象类。
4.如果一个类继承了一个抽象类,那么他就要去实现这个抽象类中的抽象方法。
5.如果一个类继承了一个抽象类,但并没有实现他的抽象方法,那么这个类也一定是抽象类。
6.抽象类不能实例化,只能指向子类
7.当一个对象引用子类时,无法直接获取子类中的set与get时可以通过有参构造方法进行赋值。
接口(interface):
1.接口是标准和规范
2.接口中包含未实现的方法和常量
3.接口只能被public修饰
4.因为接口是一种规范,所以任何类想要实现接口,必须实现接口中的方法遵循规范。
5.接口不能实例化。
6.接口可以继承接口而且可以多继承,其他类实现接口也可以多实现。

一到了面向对象的学习阶段,任务凸的一下就重了起来,原本一个包就可以解决的问题,现在竟然要10个包o(╥﹏╥)o。不信?,不信有图:

一天的练习让我对这一章节印象十分深刻,难以磨灭。我永远不会忘了,我和室友鏖战到12点,我都不知道明天自己在课上是否会眼皮打架 (T _T)。

这些面向对象的题解法不难但是其中的类与接口过于繁杂,反正肯定不能像以前一样一个类的代码直接 c+v了,所以从今天起这类型的题会调几道我觉得比较有代表性的题进行展示,这些题可能少也可能多,这个量由我发博客的时间决定(再哭一次),毕竟不能耽搁了正事嘛~,这些题我会分享一些思路,希望能帮到因为被困在这些抽象概念,所以来CSDN加强学习的小伙伴。

1.

按如下要求编写Java应用程序:

(1)编写一个用于表示战斗能力的接口Fightable,该接口包含:整型常量MAX;方法void win(),用于描述战斗者获胜后的行为;方法int injure(int x),用于描述战斗者受伤后的行为。

(2)编写一个非抽象的战士类Warrior,实现接口Fightable。该类中包含两个整型变量:经验值experience和血液值blood。当战士获胜后经验值会增加,而受伤后血液值会减少x,并且当战斗者的血液值低于MAX时会输出危险提示。

(3)编写战士类Warrior的子类BloodWarrior,该类创建的战士在血液值低于MAX/2时才会输出危险提示。

(4)编写主类TestWarrior,对上述接口和类进行测试。

先分析题目

题中有明显诉求,第一点要求:接口(Fightable)*1,常量*(MAX)1,未实现方法*2(win方法,injure方法)有第一条我们可以得出一下的代码:

package java_1213_nine;public interface Fightable {int MAX=20;void win();int injure(int x);
}

做完以上操作后我们往下继续看 非抽象类*1(Warrior) 变量*2(experience,blood) 以及实现接口并实现方法*2,得出以下代码:

package java_1213_nine;public class Warrior implements Fightable{int experience;int blood=100;@Overridepublic void win() {experience++;}@Overridepublic int injure(int x) {return blood-=x;}}

以上方法中的逻辑代码以及返回值全都可以根据题目中的要求得出。

接下来,子类*1(BloodWarrior) 以及一个自己独有的方法(危险提示),得出以下代码:

package java_1213_nine;public class BloodWarrior extends Warrior{void hint(){if(blood<(MAX/2)) System.out.println("危险!");}
}

在子类独有的方法中加入逻辑使其具有功能性。

最后来到Tset类进行测试:

package java_1213_nine;public class TestWarrior {public static void main(String[] args) {BloodWarrior b=new BloodWarrior();while (b.blood>1){int num=(int)Math.floor(Math.random()*10);if (num>5){b.win();System.out.println("你赢了!你现在有:"+b.experience+"经验值");}else{b.injure(2);System.out.println("你输了!现在还有:"+b.blood+"血量~~~~~~~~~~~~~~~~");};b.hint();}System.out.println("你已去世");}
}

其中简单的逻辑不在赘述,在这个只调用子类是因为父类无法实现子类中的方法,因为前边要求父类是个非抽象类,所以在这里只能调用子类。

走完上边的流程会得到如下的执行过程:

因为本人设置一次只掉2滴血,所以结果很长,大概有这么长长长长。开个玩笑,这个题目主要体现的是接口的规范性以及继承的复用性以及简洁性,子类与父类同用方法与变量,却只定义一次就行 这就省了很多麻烦了。

时间不早了,今天的文章应该就到这里结束了,希望可以通过这些笔记和我的思路能够帮助更多需要帮助的人。

JavaOOP学习(第六天)相关推荐

  1. Vue 学习 第六天学习笔记

    Vue 学习 第六天学习笔记 1.webpack  使用复习 第一步:先建立文件夹. 第二步,用webpack将其初始化,建立管理.npm 的包管理工具管理起来, npm init -y  .注意{查 ...

  2. python count函数用法 comm_Python学习第六天课后练习案例 (主要针对的内容是python函数的定义和使用)...

    Python学习第六天课后练习案例 2019.07.19 1.定义一个函数,该函数可以实现在内部输入一个信息,如果该信息不能转换为正整数,则重新输入,直到能转换为正整数,则对外返回转换的正整数 程序代 ...

  3. Python学习.第六天.字典

    Python学习.第六天.字典 前言 一.什么是字典? 二.字典的原理 三.字典的创建与删除 四.字典的查询操作 五.字典元素的增.删.改操作 1.key的判断: 2.字典元素的删除 3.字典元素的新 ...

  4. 51单片机入门学习 第六天

    提示:今天是学习51单片机的第六天,以下就是今天的笔记(我买的是普中的开发板,学习笔记是根据普中的视频进行学习) 目录 独立按键实验 1.按键介绍 2.硬件设计 3.软件设计 矩阵按键实验 1.矩阵按 ...

  5. C#学习第六天 基础语法练习游戏--飞行棋

    前几天学习的实践:游戏---飞行棋 步骤: 1.画游戏头 2.初始化地图(加载地图所需要的资源) 将整个数组中的数字变成控制台中显示的特殊字符串的过程,就是初始化地图 int[100]代表100个符号 ...

  6. JS基础学习第六天:JavaScript对象入门(构造函数和实例对象)

    在 JavaScript 中,大多数事物都是对象, 从作为核心功能的字符串和数组,到建立在 JavaScript 之上的浏览器 API.你甚至可以自己创建对象,将相关的函数和变量封装打包成便捷的数据容 ...

  7. Java大数据学习第六天------面向对象 类 对象 封装

    面向过程: ​ 强调的是过程, 面向对象: ​ 强调的是结果,只需要关注结果就好. 面向对象的三大特征: 封装: 把相关的数据封装成一个"类"组件 继承: 是子类自动共享父类属性和 ...

  8. python 学习第六天

    昨天发现书籍上知识不够全面,今天重新学习字符串知识. 字符串操作 字符串复制多次 #'''字符串操作符 #x+y #x*n x复制n次 #x in s x='我最喜欢的编程语言是:' y='pytho ...

  9. (二十):response 对象 (JSP学习第六天)

    response 对象 主要作用是对客户端的请求进行回应,将WEB服务器的处理结果发回客户端, response对象属于javax.servlet.http.HttpServletResponse接口 ...

最新文章

  1. 零基础入门学习Python(6)-常用操作符
  2. 计蒜客 时间复杂度 (模拟) 洛谷 P3952 时间复杂度
  3. Python学习教程(Python学习路线):Day08-面向对象编程基础
  4. linux命令:sed工具替换文件内容
  5. java中date类型如何赋值_一文读懂java中的Reference和引用类型
  6. 微信跳一跳python全部代码_微信跳一跳python代码
  7. FTP自动上传日期命名文件
  8. 合并多个nc数据_气象数据处理的火箭加速器—CDO
  9. Android 应用开机自启和无需权限开启悬浮框
  10. mac搭建apace和php开发环境
  11. [AGC003F] Fraction of Fractal 矩阵快速幂
  12. 移动硬盘损坏:文件或目录已损坏(修复实录)
  13. 佳能Canon imageCLASS MF742Cdw 一体机驱动
  14. 扫描枪取消回车二维码_如何使条码扫描枪录入完不自动回车呢-百度经验
  15. 计算机专业哪些竞赛含金量高,盘点国内五大高含金量的编程赛事
  16. Intel CPU性能linpack测试
  17. C#子窗体控制父窗体dgv刷新
  18. C++之 最大公约数求法
  19. 家谱管理系统php,家谱管理系统(含源代码).docx
  20. 组合最优化——线性规划基本定理

热门文章

  1. python环境搭建 python3.10.5 安装
  2. windows C盘下文件解析
  3. ABAP 开发利用HANA特性
  4. JavaScript基本类型与引用类型的区别
  5. win32编程 -- 系统菜单及右键菜单
  6. three.js 项目篇 之 汽车展示与控制车身颜色与贴膜材质
  7. 出海有“云”!华为云全球加速助力跨国企业提升网络体验
  8. 其实,你是在为自已打工
  9. Joplin笔记 android,把笔记还给用户「Joplin」可以选择自己存储位置的笔记应用
  10. 页面布局(3):网易首页