第三周——面向对象(中下)

本文介绍了面向对象编程中的继承机制,如何通过创建怪物类并以蛇怪和蜈蚣精为例,实现类的继承、方法重写以及super关键字的使用。同时涉及封装和访问修饰符,以及如何编写测试类来验证这两个怪物类的功能。
摘要由CSDN通过智能技术生成

一:继承

是在合理的范围中进行的抽取 ,抽取出子类父类的关系:

比如:学生类/教师类/员工类 ===》 继承自 人类   

1.使用继承步骤:
   (1) 将多个类中相同的属性和行为提取出来 放到一个单独的类里,
       这个单独的类就叫父类/基类/超类。
   (2) 将特有属性和行为 放在各自的类中,这些各自的类就叫子类/派生类。
   (3) 实现继承: 子类  extends 父类

2.继承的好处:

(1)提高了代码的复用性,父类定义的内容,子类可以直接拿过来用就可以了,不用代码上反复重复定义了

(2)便于代码的扩展

(3)为了以后多态的使用。是多态的前提。

3.父类private修饰的内容,子类也继承过来了。

4.个父类可以有多个子类。

5.一个子类只能有一个直接父类。 但是可以间接的继承自其它类。

6.继承具有传递性:

Student 继承自  Person  继承自 Object

Object类是所有类的根基父类。

所有的类都直接或者间接的继承自Object。

8.子类能继承父类的哪些资源:(父类的权限修饰符)

public : 本类,同包子类,同包非子类,不同包子类,不同包非子类

protected:本类,同包子类,同包非子类,不同包子类

默认的:本类,同包子类,同包非子类

private:本类

二:方法的重写

1.继承过来的方法----------》方法的重写!从父类中继承过来的方法,不适用于子类对象,所以子类需要重写继承过来的方法。
          重载:本类下, 方法名相同,参数列表不同,与返回值和访问修饰符无关 的两个或两个以上的方法叫做重载。

          重写:子类里,方法名相同,参数列表也相同,
         【引用数据类型:】(返回值相同或者缩小),
         【基本数据类型:】(返回值必须相同)
         【访问修饰符:】相同或扩大。

2.子类的方法名字和父类必须一致,参数列表(个数,类型,顺序)也要和父类一致。

三:super

1. super:指的是:  父类的
2. super可以修饰属性,可以修饰方法;在子类的方法中,可以通过  super.属性  super.方法 的方式,显示的去调用父类提供的属性,方法。在通常情况下,super.可以省略不写。在特殊情况下,当子类和父类的属性重名时,你要想使用父类的属性,必须加上修饰符super.,只能通过super.属性来调用。

3.super修饰构造器

其实我们平时写的构造器的第一行都有:super()  -->作用:调用父类的空构造器,只是我们一般都省略不写。(所有构造器的第一行默认情况下都有super(),但是一旦你的构造器中显示的使用super调用了父类构造器,那么这个super()就不会给你默认分配了。如果构造器中没有显示的调用父类构造器的话,那么第一行都有super(),可以省略不写)。

如果构造器中已经显示的调用super父类构造器,那么它的第一行就没有默认分配的super();了。在构造器中,super调用父类构造器和this调用子类构造器只能存在一个,两者不能共存:因为super修饰构造器要放在第一行,this修饰构造器也要放在第一行。

四:例子

要求:

  1. 请用面向对象的思想,设计游戏中的蛇怪和蜈蚣精。
  2. 分析蛇怪和蜈蚣精的公共成员,提取出父类---怪物类
  3. 利用继承机制,实现蛇怪类和蜈蚣精类
  4. 利用封装机制,设置属性的私有访问权限,通过公有的get,set方法实现对属性的访问
  5. 攻击方法,描述攻击状态。内容包括怪物名字,生命值,攻击力
  6. 编写测试类,分别测试蛇怪和蜈蚣精的对象及相关方法(测试数据信息自定)
  7. 定义名为mon的包存放怪物类,蛇怪类、蜈蚣精类和测试类

参数分析思路:

        蛇怪类:

        属性包括:怪物名字、生命值、攻击力

        方法包括:攻击移动(曲线移动)、补血(当生命值<10时,可以补加20生命值)  

        蜈蚣精类:

        属性包括:怪物名字、生命值、攻击力

        方法包括:攻击移动(飞行移动)

  • 41
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值