Inheritance l Is a form of software reusability
Inheritance l Is a form of software reusability in which programmers create classes that absorb an existing class’s data and behaviors and enhance them with new capabilities l Programmer designate that the new class should inherit the members of an existing class
Class Circle { int x; int y; double r; Class Point { int x; int y; public: void set. X(int xval); void set. Y(int yval); void set. R(double rad); void set. X(int xval); void set. Y(int yval); int get. X(); int get. Y(); double get. R(); int get. Y(); double area(); double diameter(); void print() const; double circumference(); }; void print() const; };
l l l Class Circle repeats part of class Point Software reusability saves time during program development Existing class is called base class The new class is referred to as derived class A derived class represents a more specialized group of objects A derived class contains behaviors inherited from its base class plus additional behaviors
Inheritance Vehicle Cars 2 doors Trucks 4 doors Motorcycle
Point Circle cylinder rectangle
shape Two Dim shape Circle Square Triangle Three Dim shape sphere cube
Person student Employee Full Time Part time Graduate Student worker Undergraduate
C++ offers three kind of inheritance Public Protected Private l Syntax class derived : public base {. . . } Every object of a derived class is also an object of base class l Base class object are not objects of their derived class l
Public inheritance l Derived class member function might required access to base class data member and member functions l A derived class can access the non-private members of its base class l A derived class cannot access the private member of its base class
Class Circle inherits class Point class Circle : public Point { double r; public: void set. R(double rad); double get. R(); void print(); double area(); double diameter(); double circumference(); };
Protected member l. A base class’s protected members can be accessed by members and friends of that base class and by members and friends of any classes derived from that base class
Rewrite Point and Circle class Point { protected: int x; int y; public: class Circle: public Point { public: void set. R(double rad); double get. R(); void set. X(int xval); void set. Y(int yval); double area(); double diameter(); int get. X(); int get. Y(); void print() const; }; double r; double circumference(); void print() const; };
Constructors class Point { protected: int x; int y; public: Point(int=0, int=0); void set. X(int xval); void set. Y(int yval); class Circle: public Point { public: Circle(int=0, double=0); void set. R(int rad); double get. R(); double area(); double diameter(); int get. X(); int get. Y(); void print() const; }; double r; double circumference(); void print() const; };
implementation Point: : Point(int xval, int yval) { x = xval; y = yval; } Circle: : Circle(int xval, int yval, double rval) { x = xval; y = yval; void Point: : print() const { cout<<“Point is at (“ <<x<<“, ”<<y<<“)”; } r = rval; } void Circle: : print() const { cout<<“center at (“<<x<<“, ” <<y<<“)”; cout<<“radious is “<<r; }
Point want to have private data members class Point { int x; int y; public: Point(int=0, int=0); void set. X(int xval); void set. Y(int yval); class Circle: public Point { public: Circle(int=0, double=0); void set. R(int rad); double get. R(); double area(); int get. X(); int get. Y(); double diameter(); double circumference(); void print() const; }; double r; void print() const; };
implementation Point: : Point(int xval, int yval) { x = xval; y = yval; } Circle: : Circle(int xval, int yval, double rval): Point( xval, yval) { r = rval; } Void Point: : print() const { Cout<<“Point is at (“ <<x<<“, ”<<y<<“)”; } void Circle: : print() const { cout<<“center at )“; Point: : print(); cout<<“radious is “<<r; }
- Slides: 16