如何创建一个新类,我的两个类都将从中继承方法和属性? [复制]

Posted

技术标签:

【中文标题】如何创建一个新类,我的两个类都将从中继承方法和属性? [复制]【英文标题】:How do I create a new class which both of my classes will inherit methods and properties from? [duplicate] 【发布时间】:2019-11-29 13:59:10 【问题描述】:

我有两个班级,一个叫做“玩家”,另一个叫做“敌人”。它们都有相似的方法和属性,我希望它们从我将创建并称为“游戏对象”的父类继承。

我该如何创建它?

这段代码是用 javascript 编写的,我自己尝试过研究,但没能很好地理解它。

class Enemy

    constructor(sprite, positionX, positionY, speed)
    
        this.sprite = sprite;
        this.positionX = positionX;
        this.positionY = positionY;
        this.speed = speed;
        this.direction = Math.floor(Math.random()*7) + 1;
        this.direction *= Math.floor(Math.random()*2) == 1 ? 1 : -1;
        this.active = false;
    
    getCenterPoint()
    
        return new Point(this.positionX + 16, this.positionY + 16);
    


class Player

    constructor(sprite, positionX, positionY, speed)
    
        this.sprite = sprite;
        this.positionX = positionX;
        this.positionY = positionY;
        this.speed = speed;
        this.animationFrame = true;
    
        getCenterPoint()
    
        return new Point(this.positionX + 16, this.positionY + 16);
    
   

我无法获得我想要的结果,需要一些指导。

【问题讨论】:

class Player extends GameObject ? 【参考方案1】:

您可以在 ES6 类中使用 extends 关键字进行继承:

class GameObject 
  constructor(sprite, positionX, positionY, speed) 
    this.sprite = sprite;
    this.positionX = positionX;
    this.positionY = positionY;
    this.speed = speed;
  
  getCenterPoint() 
    return new Point(this.positionX + 16, this.positionY + 16);
  


class Enemy extends GameObject 
  constructor(...props) 
    super(...props);
    this.direction = Math.floor(Math.random() * 7) + 1;
    this.direction *= Math.floor(Math.random() * 2) == 1 ? 1 : -1;
    this.active = false;
  


class Player extends GameObject 
  constructor(...props) 
    super(...props);
    this.animationFrame = true;
  

【讨论】:

以上是关于如何创建一个新类,我的两个类都将从中继承方法和属性? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

类的继承

类的继承和派生

Day17:类的继承派生组合和接口

第四周学习总结-20175218

20181214(继承,派生)

一起读《Java编程思想》(第四版)