Java学习笔记(二)——关于使用基础类的技巧

前几天在用C++的 类库SDL写跑酷小游戏的时候,有个问题一直困扰着我。

对于一个检测碰撞的函数,面对每个新的障碍物类的时候,我都需要重新写一个基本一样的check函数来检测,实在是太麻烦了,代码异常冗余。

今天在学Java的时候看到关于基础类的一个使用技巧突然点醒了我,可以设置一个障碍物基础类Trap(c++中可能需要用visual关键字来修饰...暂时还未测试),让其他的障碍物类

继承自这个基础类,这样,就可以把这个函数改成check_collision(Persons man,Trap trap)

因为其他的障碍物类都是继承自这个障碍物基础Trap的,所以在调用这个函数的时候,编译器会自动识别。

额,好像偏题了......虽然是Java的笔记,但无奈和C++的相似之处太多,还是很有启发的。

 

Update:貌似前面有些问题,今天在测试的时候,C++并不支持这种方式,编译器并不会自己识别,这么调用只会显示报错。不过,可以用另外一种方式来实现这一想法。

#include <iostream>
#include <string>
using namespace std;

class Person
{
public :
    int age;
Person()
{
    age=10;
}
 virtual void say()//注意这个虚函数!!!
 {
    cout<<"i m person"<<endl;
 }


};

class Student:public Person
{
public :
    int age;
    Student()
    {
        age=20;
    }

    void say()
    {
        cout<<"i'm student"<<age<<endl;
    }
};
void check(Person *man)//定义一个指向父类的对象指针
{
    man->say();
}

int main()
{

  Student man;
  check(&man);//将子类的地址赋给指向父类的对象指针
    return 0;
}
通过虚函数,程序将会调用子类的say()函数,注意一定要将其设为虚函数,否则还是会调用父类本身的say()函数,这一点可以去详细看下虚函数的用法。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值