有人能用运动的例子来解释OOP吗?

有人能用运动的例子来解释OOP吗?,oop,inheritance,programming-languages,polymorphism,Oop,Inheritance,Programming Languages,Polymorphism,我是OOP概念的新手(抽象、封装、继承和多态) 有人能用一个体育类的例子来解释OOP吗?比如运动,它可以有子类(足球、橄榄球、板球、拳击、斯诺克等等) 运动员管理系统的基本结构是什么 任何帮助都将不胜感激 非常感谢。这是一个非常普通的问题,不容易精确回答,但这里有一些提示,希望至少能给你一些关于继承和多态性的想法 所有运动(概念)实际上都是运动(类)的实例。这意味着类Football,Boxing等都继承自类Sport 可以在Sport中完成的事情可以在Sport的任何子类中完成,因为它实际上

我是OOP概念的新手(抽象、封装、继承和多态)

有人能用一个体育类的例子来解释OOP吗?比如运动,它可以有子类(足球、橄榄球、板球、拳击、斯诺克等等)

运动员管理系统的基本结构是什么

任何帮助都将不胜感激


非常感谢。

这是一个非常普通的问题,不容易精确回答,但这里有一些提示,希望至少能给你一些关于继承和多态性的想法

  • 所有运动(概念)实际上都是
    运动
    (类)的实例。这意味着类
    Football
    Boxing
    等都继承自类
    Sport
  • 可以在
    Sport
    中完成的事情可以在
    Sport
    的任何子类中完成,因为它实际上是一项运动。例如,如果
    cheel()
    Score()
    win()
    Sport
    中被定义为方法,那么每个子类也可以执行这些操作-这就是继承
  • 然而,每项运动都可能有不同的得分方式。如果是这样,他们可以覆盖
    Sport
    中的方法,并为此提供自己的逻辑。但是,他们必须仍然遵守
    Sport
    中规定的方法
    Score()
    的定义,这样他们才能像
    Sport
    那样行事。这是多态性
  • 欢呼和胜利在所有运动中可能是同一个概念,因此它们可以从
    Sport
一个简单的伪代码示例。这可能是相当愚蠢的(甚至在体育术语中可能在技术上都不正确,但我希望你明白我的意思!)


提示:想想现实生活中的事情是什么。如果X继承了Y,那么X可以被定义为一个X,但它仍然是一个Y,并且可以这样处理(只有添加一些额外属性的可能性)

这是一个非常普通的问题,不容易精确回答,但这里有一些提示,希望至少能给你一些关于继承和多态性的想法

  • 所有运动(概念)实际上都是
    运动
    (类)的实例。这意味着类
    Football
    Boxing
    等都继承自类
    Sport
  • 可以在
    Sport
    中完成的事情可以在
    Sport
    的任何子类中完成,因为它实际上是一项运动。例如,如果
    cheel()
    Score()
    win()
    Sport
    中被定义为方法,那么每个子类也可以执行这些操作-这就是继承
  • 然而,每项运动都可能有不同的得分方式。如果是这样,他们可以覆盖
    Sport
    中的方法,并为此提供自己的逻辑。但是,他们必须仍然遵守
    Sport
    中规定的方法
    Score()
    的定义,这样他们才能像
    Sport
    那样行事。这是多态性
  • 欢呼和胜利在所有运动中可能是同一个概念,因此它们可以从
    Sport
一个简单的伪代码示例。这可能是相当愚蠢的(甚至在体育术语中可能在技术上都不正确,但我希望你明白我的意思!)


提示:想想现实生活中的事情是什么。如果X继承了Y,那么X可以被定义为一个X,但它仍然是一个Y,并且可以这样处理(只有添加一些额外属性的可能性)

我想用一个答案来解释像OOP这样广泛的论点有点困难。尽量说得更具体些。针对你不理解的概念提出不同的问题,你以前搜索过什么?我想在一个答案中解释像OOP这样广泛的论点有点困难。尽量说得更具体些。针对你不理解的概念提出不同的问题,你以前搜索过什么?
public class Sport{

    public function score(){ 
        print("Scored!");
    }

    public function Win(){
        print("Won!");
    }

    public function Cheer(){
        print("Cheeeeeeeeer!!!");
    }
}

public class Soccer Inherits Sport{
    public override function score(){
        print("One goal!");
    }
}

public class Boxing Inherits Sport{
    public override function score(){
        print("Knockout!");
    }
}


// Using the classes:
Sport generalSport = new Sport(); // generalSport is just a non-specific sport
Sport soccerSport = new Soccer(); // soccerSport is a Soccer, but also a Sport!
Sport boxingSport = new Boxing(); // boxingSport is a Boxing, but also a Sport!

generalSport.Win(); // This should output: "Won!" (from Sport)
soccerSport.Win(); // ... "Cheeeeeeeeer!!!" (inherited from Sport)
boxingSport.Cheer() // ... "Cheeeeeeeeer!!!" (inherited from Sport)

generalSport.score(); // "Scored!"
soccerSport.score(); // "One Goal", since it was overridden in Soccer
boxingSport.score() // "Knockout!", since overridden in Boxing