IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> JavaOOP学习(第六天) -> 正文阅读

[Java知识库]JavaOOP学习(第六天)

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

直接上今天的笔记:

抽象与接口:
抽象类(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;
    @Override
    public void win() {
        experience++;
    }

    @Override
    public 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滴血,所以结果很长,大概有这么长长长长。开个玩笑,这个题目主要体现的是接口的规范性以及继承的复用性以及简洁性,子类与父类同用方法与变量,却只定义一次就行 这就省了很多麻烦了。

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

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-14 15:48:10  更:2021-12-14 15:50:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:40:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码