ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

框架加数据与抽象

2022-06-23 22:34:23  阅读:87  来源: 互联网

标签:name 框架 age 抽象 抽象类 数据 public String


  我们对room做了改造,我们把出口,从原来以成员变量的硬编码,变成了有容器,使用Hash表

以框架+数据来提高可扩展性

  命令解析是否可以脱离if-else

  定义一个Handler来处理命令

  用Hash表来保存命令和Handler之间的关系

新建Handler类

package demo02.clock.chengbao;

public class Handler {
    protected Game game;
    public Handler(Game game)
    {
        this.game=game;
    }
    public void doCmd(String word)
    {

    }
    public boolean isBye()
    {
        return false;
    }
}

 

新建HandlerBye类

package demo02.clock.chengbao;

public class HandlerBye extends Handler {

    HandlerBye(Game game) {
        super(game);
        // TODO Auto-generated constructor stub
    }

    @Override
    public boolean isBye() {
        // TODO Auto-generated method stub
        return true;
    }

    @Override
    public void doCmd(String word) {
        // TODO Auto-generated method stub
        super.doCmd(word);
    }


}

 

新建HandlerGo类

package demo02.clock.chengbao;

public class HandlerGo extends Handler {


    HandlerGo(Game game) {
        super(game);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void doCmd(String word) {
        // TODO Auto-generated method stub
        game.goRoom(word);
    }

}

 

新建HandlerHelp类

package demo02.clock.chengbao;

public class HandlerHelp extends Handler {


    HandlerHelp(Game game) {
        super(game);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void doCmd(String word) {
        System.out.println("迷路了吗?你可以做的命令有:go bye help");
        System.out.println("如:\tgo east");
    }

}

抽象

抽象方法,只声明而未实现的方法我们称为抽象方法,所有的抽象方法都需要用abstract关键字声明,包含抽象方法的类也需要使用abstract关键字声明,抽象类和普通类相比,区别在于抽象类带有抽象方法,抽象方法可以只声明,而不需要方法体。

abstract:抽象

抽象类定义规则:
1.抽象类和抽象方法必须用abstact关键字来修饰

2.抽象类不能直接实例化,也就是不能直接使用new关键字产生对象

People p = new People(); //错误,People是抽象类,无法实例化
3.抽象方法定义时,只需要声明,不需要实现

4.含抽象方法的类必须被声明为抽象类,抽象类的子类必须实现所有的抽象方法后,才能被实例化,否则这个子类还是个抽象类

提示:子类继承父类,也会继承下父类的访问权限为公有的方法,然后子类使用同样的方法名,而执行自己的方法体,我们称为方法的重写(override),这里我们就注意到,子类在继承抽象类后,我们来完成方法体,用的是“实现”而不是“重写”。

抽象函数/抽象类

抽象函数——表达概念而且无法实现具体代码的函数

抽象类——表达概念而无法构造出实体的类

带有abstract修饰符的函数

有抽象函数的类一定是抽象类

抽象类不能制造对象

但是可以定义变量

  任何继承了抽象类的非抽象类的对象可以付给这个变量

实现抽象函数

继承自抽象类的子类必须覆盖父类中的抽象函数

否则自己成为抽象类

两种抽象

与具体相对

  表示一种概念而非实体

与细节相对

  表示在一定程度上忽略细节而着眼大局

创建People类

package demo02.clock.chouxiang;

public abstract class People {
    private String  name;
    private  int age;
    //声明一个抽象方法talk()
    public abstract void talk();
}

创建Student类 Teacher类

package demo02.clock.chouxiang;

public class Student extends People {
    private String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Student() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public void talk() {
        System.out.println("学生->姓名"+this.name+"年龄"+this.age);
    }
}
package demo02.clock.chouxiang;

public class Teacher extends People {
    private String name;
    private  int age;

    public Teacher(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Teacher() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Teacher{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public void talk() {
        System.out.println("学生->姓名"+this.name+"年龄"+this.age);

    }
}

进行测试Test类

package demo02.clock.chouxiang;

public class Test  {
    public static void main(String[] args) {
        Student student = new Student("张郃",35);
        Teacher teacher = new Teacher("张飞", 48);
        student.talk();
        teacher.talk();
    }
}

 


 

 

标签:name,框架,age,抽象,抽象类,数据,public,String
来源: https://www.cnblogs.com/x3449/p/16406988.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有