Main裡:
#include <iostream>
#include "ADD.h"
#include "Multiplication.h"
using namespace std;
/*
*
*/
int main(int argc, char** argv) {
ADD add(10,20);
cout<<"10+20="<<add.getAdd()<<endl;
add.c=10;
add.d=10;
cout<<"c="<< add.c<<endl;
cout<<"d="<< add.d<<endl;
add.numberChange(add.c,add.d);
cout<<"改變後 c="<< add.c<<endl;
cout<<"改變後 d="<< add.d<<endl;
Multiplication m;
cout<<"繼承並重寫相加方法10+10= "<<m.ADD(m.c,m.d)<<endl;
cout<<"繼承並多寫相乘方法10*10= "<<m.Mult(m.c,m.d)<<endl;
cout<<"c="<< m.c<<endl;
cout<<"d="<< m.d<<endl;
m.numberChange(m.c,m.d);
cout<<"改變後 c="<< m.c<<endl;
cout<<"改變後 d="<< m.d<<endl;
return 0;
}
ADD.h:
#ifndef ADD_H
#define ADD_H
class ADD {
private:
int a,b;
protected:
int e,f;
public:
int c,d;
ADD();
ADD(int x,int y);
int getAdd();
void numberChange(int &c,int &d);
};
#endif
ADD.cpp裡:
#include "ADD.h"
ADD::ADD()
{
a=0;
b=0;
c=0;
d=0;
e=0;
f=0;
}
ADD::ADD(int x,int y)
{
a=x;
b=y;
}
int ADD::getAdd()
{
return a+b;
}
void ADD::numberChange(int &c,int &d)
{
c=100;
d=200;
}
Multiplication.h裡:
#ifndef MULTIPLICATION_H
#define MULTIPLICATION_H
#include "ADD.h"
class Multiplication:public ADD{
public:
Multiplication();
int ADD(int x,int y);
int Mult(int &x,int &y);
};
#endif
Multiplication.cpp裡:
#include "Multiplication.h"
Multiplication::Multiplication()
{
c=10;
d=10;
e=50;
f=100;
}
int Multiplication::ADD(int x, int y)
{
return x+y;
}
int Multiplication::Mult(int& x, int& y)
{
return x*y;
}
Multiplication繼承了ADD這個物件,由例子所示,子物件並不是可以使用所有
父物件的成員,假如父物件成員是private,則子物件不管怎樣都無法繼承
而假如子物件是protected則父成員全部都為protected(private不可被繼承)
而假如子物件為public則父物件還是一樣不變(private不可被繼承)
而假如子物件為private則父物件全部為private(父成員為private不可被繼承)
沒有留言:
張貼留言