类之间的关系练习2

package lianxi2;

 public abstract class Weapon {

    public abstract String getName();
    public abstract int getPower();

}
package lianxi2;

public class Knife extends Weapon {

    @Override
    public String getName() {

        return "大刀";
    }

    @Override
    public int getPower() {
        // TODO Auto-generated method stub
        return 10;
    }

}
package lianxi2;

public class Bow extends Weapon {

    public String getName() {
        return "后裔强弓";
    }

    public int getPower() {

        return 20;
    }

}
package lianxi2;

public class Hero {
Weapon weapon;
String name;
public Hero(Weapon weapon, String name) {
    super();
    this.weapon = weapon;
    this.name = name;
}

public void attack(Enemy e)    {
    e.hurt(weapon.getPower());
    System.out.println(this.name+"使用"+weapon.getName()+"攻击"+e.name);
    e.showInfo();
}

public Weapon getWeapon() {
    return weapon;
}

public void setWeapon(Weapon weapon) {
    this.weapon = weapon;
}

}
package lianxi2;

public class Enemy {
    int power=100;
    String name;

    public Enemy(int power, String name) {
        super();
        this.power = power;
        this.name = name;
    }
    public void hurt(int blood){
        this.power=this.power-blood;
    }
    public void showInfo(){
        if(this.power<=0){
            System.out.println(this.name+"over");
        }else {
            System.out.println(this.name+"的血量"+this.power);
        }

    }

}
时间: 2024-10-14 19:13:54

类之间的关系练习2的相关文章

全面解释java中StringBuilder、StringBuffer、String类之间的关系

http://www.jb51.net/article/33398.htm String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间,StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象,StringBuffer和StringBuilder类功能基本相似 1. String 类  String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不

今天最主要的就是掌握了类与类之间的关系

今天编写出了表达式计算器的第一版程序,主要还是更加熟悉了类与类之间的关系.第一版程序有个问题,就是它任何情况下都执行右结合律,比如正常输入8-9+1,程序处理成8-(9+1).明天学习改进的方法. 今天整理了一下类与类之间各种关系的区别.如下文 http://www.cnblogs.com/mingdimowang-lyw/p/6598184.html 今天的学习是比较痛苦的,一度想让自己放弃. 后来冷静了一下,思考一下为什么会想放弃.其实是因为自己试图去完全靠自己编写程序,但是自己距离这个程度

java 类与类之间的关系 及uml图

类与接口之间的关系 : 继承 类与类之间的关系 :继承关系  包含关系 类与对象之间的关系 : 实例 UML 类图中类与类之间的关系: 泛化关系(generalization) 关联关系(association) 聚合关系(aggregation) 合成关系 (compostion) 依赖关系 (dependency) 1.泛化(Generalization)[泛化]表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系.一般化的关系是从子类指向父类的,与继承或实现的方法相反.

oc学习之封装与类之间的关系

1. 面向对象的特征-封装? 封装: 现实生活中的封装: 将很多的小东西 塞在1个大口袋里面. 好处: a. 对外部屏蔽. b. 方便管理. 代码的封装: 函数/方法 就是1种封装的体现: 将一段代码塞在函数/方法中. 好处: 屏蔽了内部的实现. 便于管理. 类是一种更高级别的封装: 1个类中封装数据的状态和行为. 将数据的状态和行为封装在了1个类中. 类中有很多复杂的实现. 对于外部而言无需关心. 只需要知道这个类是干啥的? 怎么用? 把哪些复杂的东西. 方法,属性.封装成1个类的整体. 2.

类之间的关系——宅客

类之间的关系有: 关联关系:类B作为属性被类A使用 ——对象和对象之间的连接.在java中,关联关系的代码表现形式为一个类做为另一个类的属性类型存在. ——即"有"的关系:"has-a". *关联关系分为单向关联和双向关联 ——单向关联:A类关联B类. ——双向关联:A类关联B类,B类关联A类. 例如: public class Phone{ private Person per; } public class Person{ private Phone phone

关于类之间的关系2----依赖

依赖是指类之间的调用关系,比如类A需要访问类B的属性和方法,或者类A负责实例化类B,那么我们就可以说A依赖B.UML图中用带虚线的实线箭头连接.和关联关系不同,无需在类A中定义类B类型的属性.也就是说,类A访问了类B的属性或者方法,假如类B不存在,那么类A也就会出错.开始接受依赖概念的时候,我经常跟继承混淆,看了百度上面的部分代码后,也明白两个不同概念的不同点了: 继承:public class apublic int a = 1;public void hello(){}public clas

【小话设计模式】类之间的关系

4.组合(Composition) 定义:相比于聚合,组合是一种耦合度更强的关联关系.存在组合关系的类表示"整体-部分"的关联关系,"整体"负责"部分"的生命周期,他们之间是共生共死的:并且"部分"单独存在时没有任何意义.如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏. 符号:带实心菱形实线箭头表示 1.合成关系是关联关系的一种,是比聚合关系还要强的

【47】java的类之间的关系:泛化、依赖、关联、实现、聚合、组合

java的类之间的关系:泛化.依赖.关联.实现.聚合.组合 泛化: ? 泛化关系(Generalization)也就是继承关系,也称为"is-a-kind-of"关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类.在UML中,泛 化关系用带空心三角形的直线来表示. ? 在代码实现时,使用面向对象的继承机制来实现泛化关系,如在Java语言中使用extends关键字.在C++/C#中使用冒号":"来实现. 泛化对应Java中继承关系,即子

uml描述类与类之间的关系

工作时培训的时候公司同事讲过UML,当时没怎么听,后在在看相关技术书籍的时候,发现用到还不少,于是恶补了些.UML体系庞杂,非十天半月可以掌握,但是作为简单的工具使用,去看清楚系统的内在逻辑还是可以速成的.(非设计系统),股票市场是一场拼图游戏,而UML也可以作为拼图工具去参与面向对象体系软件设计的! 废话不多说,进入正题. 先介绍几款画UML的工具,三大知名VISIO,RationalRose,PowerDesign不多说,个人喜欢用开源的,一是免费,二是通常体积较小,运行起来比较快.我用的是

关于基类和派生类之间的关系

作为面向对象的程序设计来说,继承是非常重要的一个特点,面向对象程序设计(Object-Oriented Programming, OOP)的核心思想是数据抽象.继承和动态绑定.其中使用数据抽象,我们可以将类的接口与实现分离:使用继承,可以定义相似的类型并对其相似关系建模:使用动态绑定,可以在一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象.下面什么主要介绍的是继承中基类和派生类之间的关系. 在基类中有两种类型的成员是我们需要注意的,一种是基类希望派生类继承的:一种是基类希望派生类覆盖的